基准时间限制:1 秒 空间限制:131072 KB 分值: 80
令 F
求F(x)=0的前n小的正根的和。
n<=3e6,A<=1e3,B<=1e3
其中w是定值,为1e4
保留到小数点后3位
Input
三个数 A B n
Output
答案 保留3位小数
Input示例
5 4 1000
Output示例
1572338.870
思路:
把式子整理下然后就行了,F(x)可以最终写成Xsin(x)+Ycos(x)的形式,F(x)=Zsin(x+α),那么-a+pi就是通解。
1 #include<stdio.h> 2 #include<algorithm> 3 #include<iostream> 4 #include<string.h> 5 #include<queue> 6 #include<stack> 7 #include<math.h> 8 using namespace std; 9 typedef long long LL; 10 double pi = 3.14159265358979323846264; 11 int main(void) 12 { 13 double A,B; 14 int n; 15 scanf("%lf %lf %d",&A,&B,&n); 16 int i,j; 17 double sum = 0; 18 double summ = 0; 19 for(i = 1; i <= 10000; i++) 20 { 21 sum = sum + A*cos(1.0*i)/(i+sin(1.0*i)); 22 sum = sum - B*sin(1.0*i)/(i+cos(1.0*i)); 23 summ = summ + A*sin(1.0*i)/(i+sin(1.0*i)); 24 summ = summ + B*cos(1.0*i)/(i+cos(1.0*i)); 25 } 26 double xx = sqrt(sum*sum+summ*summ); 27 double x = 1.0*sum/xx; 28 double y = acos(x); 29 while(y<=0) 30 { 31 y+=pi; 32 } 33 double ak = y; 34 n--;//printf("%lf ",y); 35 while(n) 36 { 37 n--; 38 y+=pi; 39 ak+=y; 40 } 41 printf("%.3f ",ak); 42 return 0; 43 }