polite number的意思是一个正整数可以表示为几个连续的正整数的和。
3 = 1 + 2 鏉ユ簮涓€浜�.涓夊垎鍦拌鍧�.
5 = 2 + 3 鏉ユ簮涓€浜�.涓夊垎鍦拌鍧�.
6 = 1 + 2 + 3
.
.
.
15 = 1 + 2 + 3 + 4 + 5
4 + 5 + 6
7 + 8
3 = 1 + 2 鏉ユ簮涓€浜�.涓夊垎鍦拌鍧�.
5 = 2 + 3 鏉ユ簮涓€浜�.涓夊垎鍦拌鍧�.
6 = 1 + 2 + 3
.
.
.
15 = 1 + 2 + 3 + 4 + 5
4 + 5 + 6
7 + 8
给你一个正整数,让你求出一共有多少种表示的可能性,比如3就返回1,15就返回3.
思路: Every Time the sum has a start point and end point. Start point from 1 to n/2, and end point is no larger than n/2 + 1;
we add integers from start point to end, if the sum equals to n, result++, else plus next point.
public int politNumber(int n){
if(n < 1)
return -1;
int ret = 0;
int start = 1;
while(start <= n/2){
int sum = 0;
for(int i = start; i <= n/2 + 1 ; i++){
sum += i;
if(sum == n)
ret++;
}
start++;
}
return ret;
}