您的位置:首页 > 其它

Sum(构造,枚举)

2015-12-31 08:41 344 查看
原题连接http://acm.hnu.cn/online/?action=problem&type=show&id=13396
这道题并不难,他已经给出公式了

k+k+1+k+2+k+3+....+b=N;

我们可得(2*k+d-1)*d=2*N;然后我们从2~根号2*n枚举d,看它是否满足整除关系= =

1 #include<stdio.h>
2 #include<iostream>
3 #include<algorithm>
4 #include<string.h>
5 #include<math.h>
6 int main()
7 {
8     int t,n;
9     scanf("%d",&t);
10     while(t--)
11     {
12         int flag=0;
13         int l,r;
14         scanf("%d",&n);
15         n=2*n;
16         for(int i=2;i<=sqrt(n);i++)
17         {
18             if(n%i==0)
19             {
20                    int ans=n/i;
21                     if((ans-i+1)%2==0)
22                     {
23                         l=(ans-i+1)/2;
24                         r=l+(i-1);
25                         flag=1;
26                          break;
27                   }
28             }
29             }
30         if(flag==0)
31         printf("IMPOSSIBLE\n");
32         else
33         {
34             printf("%d = ",n/2);
35             for(int i=l;i<r;i++)
36             printf("%d + ",i);
37             printf("%d\n",r);
38         }
39     }
40     return 0;
41 }


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: