信息学奥赛一本通(C++)在线评测系统——基础(二)基础算法 —— 1313:【例3.5】位数问题
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                信息学奥赛一本通(C++)在线评测系统——基础(二)基础算法 —— 1313:【例3.5】位数问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                時間限制: 1000 ms 內存限制: 65536 KB
 提交數: 4005 通過數: 2088
【題目描述】
在所有的N位數中,有多少個數中有偶數個數字3?由于結果可能很大,你只需要輸出這個答案對12345取余的值。
【輸入】
讀入一個數N(N≤1000)。
【輸出】
輸出有多少個數中有偶數個數字3。
【輸入樣例】
2
【輸出樣例】
73
【來源】
No
代碼
#include <iostream> #include <sstream> #include <cmath> using namespace std; int main() {int n,temp=0;cin>>n;for(int i=pow(10,n-1);i<pow(10,n);i++){int ans=0;string s;stringstream ss;ss<<i;ss>>s;for(int j=0;j<s.length();j++){if(s[j]=='3') ans++;}if(ans%2==0) temp++;}cout<<temp%12345<<endl;return 0; }運行超時。。。。。。
#include <iostream> #include <cmath> using namespace std; int main () {int n,temp=0;cin>>n;for(int i=pow(10,n-1);i<pow(10,n);i++){int ans=0;for(int j=1;j<=n;j++){int x=pow(10,j-1);if((i/x%10)==3) ans++;}if(ans%2==0) temp++;}cout<<temp%12345<<endl;return 0; }好,又超時了。。。。。
#include <iostream> using namespace std; int main () {int f[1001][2],n;cin>>n;f[1][1]=1;f[1][0]=9;for(int i=2;i<=n;i++){int x=f[1][0];if(i==n)x--;f[i][0]=(f[i-1][0]*x+f[i-1][1])%12345;f[i][1]=(f[i-1][1]*x+f[i-1][0])%12345;}cout<<f[n][0]<<endl;return 0; }行吧,終于AC了。
總結
以上是生活随笔為你收集整理的信息学奥赛一本通(C++)在线评测系统——基础(二)基础算法 —— 1313:【例3.5】位数问题的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 信息学奥赛一本通(C++)在线评测系统—
- 下一篇: 信息学奥赛一本通(C++)在线评测系统—
