• 信息学奥赛一本通(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了。

  • 相关阅读:
    windows下的SASS/Compass的安装与卸载
    玩转HTML5移动页面(优化篇)
    小谈数组去重
    前端问题解答
    JavaScript使用封装
    JavaScript使用接口
    JavaScript精要(系列)
    JavaScript DOM节点和文档类型
    JavaScript数组类型
    JavaScript函数表达式
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338932.html
Copyright © 2020-2023  润新知