2009: Parity check
Time Limit: 2 Sec Memory Limit: 128 MB
Description
Fascinated with the computer games, Gabriel even forgets to study. Now she needs to finish her homework, and there is an easy problem:
She is required to calculate f(n) mod 2 for each given n. Can you help her?
Input
Multiple test cases. Each test case is an integer n(0≤n≤10^1000) in a single line.
Output
For each test case, output the answer of f(n)mod2.
Sample Input
2
Sample Output
1
HINT
Source
【分析】
咋一看,最先想到的是递归,但是后面多想了一下,首先n太大了,其次答案是要f(n)mod2的结果,既然要mod2,那么结果就只能是0或者1;这样想就发现其实是有规律所寻的(把f(0)~f(10)算出来,然后mod2看看,就能找到规律了)。
【代码】
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
char n[1010];
int main()
{
while(scanf("%s",&n)!=EOF)
{
getchar();
int ans=0,lenth=strlen(n);
for(int i=0;i<lenth;i++)
{
int num=ans*10+(n[i]-'0');
ans=num%3;
}
if(ans==1||ans==2)
printf("1\n");
else
printf("0\n");
}
return 0;
}