好数
题目
题目分析
1.蓝桥杯不怕麻烦的,一般可以选择用long long int 替换int,防止数据过大
2.这道题不怕麻烦的话,可以直接暴力解,用多个if语句进行判断即可
3.想要美观点的,就进行数位判断
4.这道题就一个关键点:奇数位对奇数,偶数位对偶数
代码1
#include <iostream> using namespace std; int a[10001]; int ans=0; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ if(i<10&&i%2!=0) ans++; if(i>=10&&i<100&&(i%10)%2!=0&&(i/10)%2==0) ans++; if(i>=100&&i<1000&&i%10%2!=0&&i%100/10%2==0&&i/100%2!=0) ans++; if(i>=1000&&i<10000&&i%10%2!=0&&i%100/10%2==0&&i%1000/100%2!=0&&i/1000%2==0) ans++; if(i>=10000&&i<100000&&i%10%2!=0&&i%100/10%2==0&&i%1000/100%2!=0&&i%10000/1000%2==0&&i/10000%2!=0) ans++; if(i>=100000&&i<1000000&&i%10%2!=0&&i%100/10%2==0&&i%1000/100%2!=0&&i%10000/1000%2==0&&i%100000/10000%2!=0&&i/100000%2==0) ans++; if(i>=1000000&&i<10000000&&i%10%2!=0&&i%100/10%2==0&&i%1000/100%2!=0&&i%10000/1000%2==0&&i%100000/10000%2!=0&&i%1000000/100000%2==0&&i/1000000%2!=0) ans++; } cout<<ans; return 0; }
代码2
#include<bits/stdc++.h> using namespace std; int main() { int a;cin >> a;//输入的整数 int ans = 0;//输出的结果 for(int i = 1;i <= a; ++ i)//枚举从1到a所有数 { int cnt = 1;//用来记录奇数位还是偶数位 int flag = 1;//用来判断是否好数的标记 int rec = i;//获得i值取出各个位置的值进行判断 while(rec) { int j = rec % 10;//取出最后一位 if(cnt % 2 == 1)//若奇数位 { if(j % 2 != 1)//若奇数位不为奇数 { flag = 0; } } if(cnt % 2 == 0)//若偶数位 { if(j % 2 != 0)//若偶数位不为偶数 { flag = 0; } } cnt ++;//第几位增加(从后往前) rec /= 10;//去掉最后一位 } if(flag == 1)ans ++;//判断是否好数 } cout << ans;//输出答案 return 0; }
标签:2024,好数,int,namespace,蓝桥,&&,ans From: https://www.cnblogs.com/hcrzhi/p/18138934