SCI表示法

题目名称:SCI表示法

题目链接:SCI表示法

描述

每一个正整数 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

样例输出

5
1

解题思路

第一眼看过去觉得直接暴力求解就可以,看了数据范围之后觉得肯定会超时,一定有简单的解决方案,看了讨论之后明白了,设置首项和项数之后,以首项和项数是否为整数作为判断条件即可求得最大项数

扫描二维码关注公众号,回复: 9019818 查看本文章

完整代码

#include<bits/stdc++.h>
using namespace std;
 
int n,t,m,a;

int main()
{
	cin>>t;
	while(t--){
		cin>>n;
		for(int m=floor(sqrt(2*n));m>=1;m--){
			int k=2*n;
			if(k%m==0){
				if((k/m-m+1)%2==0){
					cout<<m<<endl;
					break;
				}
			}
		}
	}
	return 0;
}
发布了119 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zhangdy12307/article/details/104149906
今日推荐