• 蓝桥杯-子 2023 / 双子数


    题解:

    第一个问题A

    动态规划问题

    f[4]

    状态表示:

    • f[0]表示数字是2的个数
    • f[1]表示以2开头0结尾的个数
    • f[2]表示以20开头2结尾的个数
    • f[3]表示以202开头3结尾的个数

    f[3]就是答案

    代码中有详细的注释和注意事项

    A代码👇

    #include
    #define int long long  // 答案会爆 int
    using namespace std;
    
    int f[4];
    signed main(){
    	
    	string s;
    	for(int i=1;i<=2023;i++) s+=to_string(i);//构造string 
    	
    	for(int i=0;i<s.size();i++){
    		if(s[i]=='2')  // 状态计算
    		{
    			f[0]++;
    			f[2]+=f[1];  // 2 既可以是第一个, 也可以是第二个, 是第二个的话, 需要是以20开头, 即f[1]
    		}
    		else if(s[i]=='0') f[1]+=f[0];
    		else if(s[i]=='3') f[3]+=f[2];
    	} 
    	cout<<f[3]<<endl;
    }
    

    第二个问题B

    • 找出 1 ~ 23333333333333中的所有素数
    • 枚举所有素数, 判断是否满足 p * p * q * q == n
    • 满足条件的cnt ++

    代码中有详细的注释和注意事项

    B代码👇

    #include 
    using namespace std;
    #define int __int128    // 这里用long long也不行, longlong数据范围是1e18, __int128是1e38
    const int N = 1e7 + 10;  // 因为23333333333333不到1e14, 对它开方, 它的素数不超过1e7
    bool prime[N];
    vector<int> v;
    signed main()
    {
        // 筛素数
    	prime[1] = true;
    	for (int i = 2; i < N; i ++)
    	{
    		if (!prime[i])
    		{
    			v.push_back(i);
    			for (int j = i + i; j < N; j += i)
    				prime[j] = true;
    		}
    	}
    
        // 找满足条件的个数
    	long long cnt = 0;
    	for (int i = 0; i < v.size(); i ++)
    		for (int j = i + 1; j < v.size(); j ++)
    		{
                // 不要用注释的判断方法, 运行时间太长, 要跑好久好久久久...
    		//	if (v[i] * v[i] * v[j] * v[j] >= 2333 && v[i] * v[i] * v[j] * v[j] <= 23333333333333)
    			if (v[i] * v[i] * v[j] * v[j] < 2333) continue;
    			else if (v[i] * v[i] * v[j] * v[j] > 23333333333333) break;
    			cnt ++;
    		}
    	cout << cnt << endl;
    	return 0;
    }
    

    最终ac代码👇

    #include 
    
    using namespace std;
    
    signed main()
    {
        string str; cin >> str;
        if (str == "A") cout << 5484660609 << endl;
        else cout << 947293 << endl;
        return 0;
    }
    

    觉得写的不错的话, 点个赞吧~

  • 相关阅读:
    单元测试:会变化的定义
    git push的详细使用
    PyTorch神经网络-激励函数
    【CMAKE极简教程】不断更新中......
    GIS实战应用案例100篇(七十九)-多规整合底图的制作要点
    域名系统 DNS
    2023 年 亚太赛 APMCM 国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析
    多数元素[简单]
    一起Talk Android吧(第三百八十回:通知的基本使用方法)
    项目基于MVC的.Net技术类门户网站源码
  • 原文地址:https://blog.csdn.net/m0_74065705/article/details/139128554