LFYZ-OJ ID: 1019 位數問題
阿新 • • 發佈:2019-02-15
位數問題
問題描述
在所有的N位數中,有多少個數中有偶數個數字3?由於結果可能很大,你只需要輸出這個答案對12345取餘的值。
INPUT
輸入一個數N(1<=N<=1000),輸入以0結束。
OUTPUT
對於每一個N輸出有多少個數中有偶數個數字3。
Sample Input
2
0
Sample Output
73
如果n位數中有偶數個3,新增一個數位為3,則n+1位數中有奇數個3
如果n位數中有偶數個3,新增一個數位為非3,則n+1位數中有偶數個3
如果n位數中有奇數個3,新增一個數位為3,則n+1位數中有偶數個3
如果n位數中有奇數個3,新增一個數位為非3,則n+1位數中有奇數個3
方二:#include<stdio.h> int main(){ int n,i; scanf("%d",&n); int a[n+1],b[n+1];//a[i]表示i位數字中由偶數個3,b[i]表示i位數字中由奇數個3, a[1]=9;b[1]=1; for(i=2;i<=n;i++){ a[2]=a[1]*9+b[1]; b[2]=b[1]*9+a[1]; if(i<n-1){//滾動陣列 a[1]=a[2]; b[1]=b[2]; } } if(n==1){ printf("%d",a[1]); } else printf("%d",a[2]-a[1]); //減去開頭是0的 }
#include<stdio.h>
int main(){
int n,i;
scanf("%d",&n);
int a[n+1],b[n+1];//a[i]表示i位數字中由偶數個3,b[i]表示i位數字中由奇數個3,
a[0]=0;
a[1]=9;b[1]=1;
for(i=2;i<=n;i++){//滾動陣列
a[i%2]=a[(i-1)%2]*9+b[(i-1)%2];
b[i%2]=b[(i-1)%2]*9+a[(i-1)%2];
}
printf("%d",a[n%2]-a[(n-1)%2]); //減去開頭是0的
}