Heng_Xin 题解分享 · 2025/4/8
好数(编程题) - 题解
位运算写法 ```cpp #include <iostream> using namespace std; using ll = long long; int main() { int res = 0; int n = 0; cin >> n; for (int i = 1; i <= n; i += 2) { bool tag = 1; int x = i; while (x) { if ((x & 1) ^ tag) goto End; tag ^= 1; x /= 10; } ++res; End: ; } cout << res << '\n'; return 0; } ```
查看全文
3 0 1 13
yiming 题解分享 · 2025/4/8
好数(编程题) - 题解
``` #include <bits/stdc++.h> using namespace std; bool isValid(int num) { string s = to_string(num); int len = s.length(); int k = 0; for (int i = len - 1; i >= 0; i--, ++k) { int digit = s[i] - '0'; if (k % 2 == 0 && digit % 2 == 0) return false; if (k % 2 == 1 && digit % 2 == 1) return false; } return true; } int main() { int N; cin >> N; int count = 0; for (int i = 1; i <= N; i++) { if (isValid(i)) count++; } cout << count << endl; return 0; } ```
查看全文
3 0 0 12
CQS 题解分享 · 2025/4/10
好数(编程题) - 题解
``` #include <iostream> using namespace std; int main() { long long N; cin >> N; int cnt = 0; for (int i = 1; i <= N; i++) { int num = i; bool flag = true; bool isGood = true; while (num != 0) { int a = num % 10; num /= 10; if (flag) { if (a % 2 != 1) { isGood = false; break; } } else { if (a % 2 != 0) { isGood = false; break; } } flag = !flag; } if (isGood) cnt++; } cout << cnt << endl; return 0; } ```
查看全文
2 0 0 8
chenchen 题解分享 · 2025/3/10
好数(编程题) - 题解
``` #include <bits/stdc++.h> #define endl '\n' using namespace std; using ll = long long; using ULL = unsigned long long; const int N = 1e7+5; int n; bool check(int x) { int cnt = 1; while (x) { int a = x % 10; if (cnt & 1) { if (a % 2 == 0) return false; }else { if (a & 1) return false; } x /= 10; cnt++; } return true; } inline void solve() { cin >> n; int ans = 0; for (int i = 1; i <= n; i++) { if (check(i)) ans++; } cout << ans << endl; } int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int _ = 1; //int _; cin >> _; while (_--) solve(); return 0; } ```
查看全文
2 0 0 3
qqqyyy 题解分享 · 2024/4/17
好数(编程题) - 题解
``` #include <bits/stdc++.h> using namespace std; int main(){ int n,ans=0; cin>>n; for(int i=1;i<=n;i+=2){ string s=to_string(i); int len=s.size(); int k=0; for(int i=len-1;i>=0;i--,++k){ if((s[i]%2!=0&&k%2==0)||(s[i]%2==0&&k%2!=0)) continue; else break; //TO } if(k==len) ans++; } printf("%d",ans); return 0; } ``` 一种方法
查看全文
4 0 2 14
zxd666888 题解分享 · 2024/4/14
好数(编程题) - 题解
``` 暴力 #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; } ```
查看全文
3 0 3 14
yuri 题解分享 · 2024/4/14
好数(编程题) - 题解
``` #include <bits/stdc++.h> using namespace std; int n; int main() { cin >> n; int cnt = 0; for (int i = 1; i <= n; i++) { int v = i; int u = 1; int f = 1; do { if (v % 2 != u) f = 0; if (u == 1) u = 0; else u = 1; } while (v /= 10); if (f) cnt++; } cout << cnt << endl; return 0; } ```
查看全文
4 0 1 11
desert 题解分享 · 2024/4/14
好数(编程题) - 题解
签到题就不多说了,献上第一份我的弱鸡题解。 ``` #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; } ```
查看全文
2 0 1 11
wyb 题解分享 · 2024/4/14
好数(编程题) - 题解
``` #include<bits/stdc++.h> using namespace std; typedef long long ll; ll N; int cnt = 0; void solve(ll num) { int tmp; int index = 0; while(num>0) { index++; tmp = num%10; if(index%2==1&&tmp%2!=1) return; if(index%2==0&&tmp%2!=0) return; num = num/10; } cnt++; return; } int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>N; for(ll i = 1;i<=N;i++) solve(i); cout<<cnt; return 0; } ```
查看全文
2 0 0 2
4run 题解分享 · 2024/4/20
好数(编程题) - 题解
``` #include<bits/stdc++.h> using namespace std; #define int long long int n; bool check(int x){ int flag=1; while(x>0){ if(flag==1){ if(x%2==0) return false; else{ flag=0; x=x/10; } }else if(flag==0){ if(x%2==1) return false; else{ flag=1; x=x/10; } } } return true; } signed main(){ cin>>n; int ans=0; for(int i=1;i<=n;i++){ if(check(i)){ ans++; } if(i>10&&(i/10)%2==1&&!check(i)){ i+=9; } } cout<<ans; return 0; } ```
查看全文
1 0 0 20