首页 > 其他 > 详细

Sum(构造,枚举)

时间:2015-08-17 08:41:49      阅读:243      评论:0      收藏:0      [点我收藏+]

原题连接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 }

 

Sum(构造,枚举)

原文:http://www.cnblogs.com/NaCl/p/4735585.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!