Description
最近LL大神开始看具体数学了,他发现一种奇妙的数字,这种数字是对称的,比如125521,21212这些,他还发现,有些对称的数字还具有一开始递增,后来递减,且只相差1的特点,比如12321,123454321,34543。我们的LL大神现在想知道,如果各个位上的和知道了,那么有多少个这样的数字呢?
比如N=9,有12321和9两个,答案是2
Input
第一行一个数字T,表示测试数据组数。
之后T行,每行一个数字N,表示要求的N。
数据范围N<=81
Output
每行一个数字,表示答案数。
Sample Input
1
9
Sample Output
2
解题思路:
由于测试数据比较小,可以用最朴素的方法做.
题目要求满足的数其各个位相加要等于N,
(1)如果N是奇数,那么中间的数必为奇数
(2)如果N是偶数,那么中间的数必为偶数
#include<iostream>
using namespace std;
int main()
{
int caseN;
while(cin>>caseN){
for(int i=0;i<caseN;++i)
{int N;
while(cin>>N)
{
int result = 0;
int i = 0;
if(N%2==1)
i = 1;
else
i = 2;
int t = 0;
for(;i<10;i=i+2)
{
int j=i-1;
t = i;
if(t==N)
++result;
while(j>=1&&t<N)
{
t = t+2*j;
if(t==N)
{
++result;
break;
}
--j;
}
}
cout<<result<<endl;
}
}
}
return 0;
}
最后欢迎大家访问我的个人网站: 1024s