2018 青島區域賽 M - Function and Function
阿新 • • 發佈:2018-12-04
Function and Function
Sample Input
6 123456789 1 888888888 1 888888888 2 888888888 999999999 98640 12345 1000000000 0
Sample Output
5
18
2
0
0
1000000000
題意描述:
根據表格中每個數字對應的值,求出經過K次關係轉化,輸出最後的結果。如f(123)=0+0+0=0;就是數字1、2、3每個數字對應的數值再求和。而f^2(123)就是f(f(123))=f(0)=1;
解題思路:
簽到題,當經過轉化次數多後,最後結果不是0就是1;利用函式進行轉化,當轉化為0時不在轉化,判斷還需要轉化的次數,如果剩餘奇數次結果就為1,偶數次為0;
(判斷奇偶,可用按位與,“&”,(k&1)為真k即為奇數)
程式程式碼:
#include <stdio.h> int mm[] = {1,0,0,0,1,0,1,0,2,1}; int mmm(int n) { int ans = 0; if (n==0) return 1; while(n) { ans+=mm[n%10]; n/=10; } return ans; } int main() { int t, x, k, n; scanf("%d",&t); while (t--) { scanf("%d%d", &x, &k); while(k) { x=mmm(x); k--; if(x==0) break; } if(k) { if(k & 1) x=1; } printf("%d\n", x); } return 0; }