HihoCoder
来源:互联网 发布:盛夏光年知乎 编辑:程序博客网 时间:2024/06/14 04:33
每一个正整数 N 都能表示成若干个连续正整数的和,例如10可以表示成1+2+3+4,15可以表示成4+5+6,8可以表示成8本身。我们称这种表示方法为SCI(Sum of Consecutive Integers)表示法。
小Hi发现一个整数可能有很多种SCI表示,例如15可以表示成1+2+3+4+5,4+5+6,7+8以及15本身。小Hi想知道N的所有SCI表示中,最多能包含多少个连续正整数。例如1+2+3+4+5是15包含正整数最多的表示。
第一行一个整数 T,代表测试数据的组数。
以下 T 行每行一个正整数N。
对于30%的数据,1 ≤ N ≤ 1000
对于80%的数据,1 ≤ N ≤ 100000
对于100%的数据,1 ≤ T ≤ 10,1 ≤ N ≤ 1000000000
对于每组数据输出N的SCI表示最多能包含多少个整数。
2 15 8
51
思路:因为是连续的一段正整数,所以为等差数列,设这一段连续的数中,首项为n,尾项为m,等差数列和为(n+m)*(m-n+1)/2; a=(n+m),b=(m-n+1)
a-b一定为奇数才可以满足条件。求2*sum的开方根,枚举满足有条件下最大的b (项数)。。
#include<cstdio>#include<cstring>#include<cmath>using namespace std;typedef long long ll;int main(){ int t; ll m; scanf("%d",&t); while(t--) { scanf("%lld",&m); ll ans=(ll)sqrt(2*m); for(ll i=ans;i>=1;i--) { if((2*m)%i==0) { ll j=2*m/i; if((j-i)%2) { printf("%lld\n",i); break; } } } } return 0;}
阅读全文
0 0
- hihocoder:
- hihoCoder
- Hihocoder
- hihocoder
- hihocoder
- hihocoder
- hihocoder
- hihocoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- hihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- 2017杭电多校第三场 1003 Kanade's sum(hdu6058 区间内第k大)
- I
- docker 保存对容器的修改
- POJ2369 Permutations 置换群循环节
- ie8下的兼容问题
- HihoCoder
- ubuntu 更新源
- webapi下使用npoi导出数据到excel,包含自动列宽和自动合并某一列单元格
- javascript将秒数换算成时分秒
- 无法定位程序输入点于动态链接库kernel32
- FLV文件格式解析
- Linux内核中如何使用数学函数和软浮点?
- java-约瑟夫环问题
- 百练noi 22:神奇的幻方