The 2018 ACM-ICPC Asia Qingdao Regional Contest (Mirror) M Function and Function
阿新 • • 發佈:2018-11-11
此題是一道簽到題目,說是簽到題目但是自己卻做了好久啊。。。如果暴力算的話,會超時。
仔細分析一下會發現f(0)跟f(1)是能夠相互轉化的。所以當算到0和1的時候只需要根據奇偶次運算就能夠判斷結果了。
程式碼如下:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; int n; int a[15]={1,0,0,0,1,0,1,0,2,1}; int x,k; int main() { while (scanf("%d",&n)!=EOF) { while (n--) { scanf("%d%d",&x,&k); int ans=x; for (int i=0;i<k;i++) { int t=x,tans=0; if(t==0) { tans=1; } else { while (t) { tans+=a[t%10]; t/=10; } } if(tans==1||tans==0) { if((k-i-1)%2) { tans=(tans+1)%2; } ans=tans; break; } x=tans; ans=tans; } printf("%d\n",ans); } } return 0; }