XDOJ1180 - 对称数

来源:互联网 发布:天下三捏脸数据 编辑:程序博客网 时间:2024/04/19 17:38
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;}


0 0