19 条题解
-
20
这一道题同样,是函数问题,那么先把判断回文的代码抬过来!
bool huiwen(int n1) { int n2 = n1, sum = 0; while (n1 > 0) { sum = sum * 10 + n1 % 10; n1 /= 10; } if (sum == n2) return true; else return false; }
然后只需要输入变量 n,并且便利从 1 ~ n,如果是回文数字就将总数 sum 加上一,就是AC代码啦!
#include <bits/stdc++.h> using namespace std; bool huiwen(int n1) { int n2 = n1, sum = 0; while (n1 > 0) { sum = sum * 10 + n1 % 10; n1 /= 10; } if (sum == n2) return true; else return false; } int main() { int n, sum = 0; cin >> n; for (int i = 1; i <= n; i++) if (huiwen(i)) sum += 1; cout << sum << endl; return 0; }
-
3
#include <iostream>//hetao3097453 using namespace std; bool huiwen(int x) { int n = x, sum = 0; while (x > 0) { sum = sum * 10 + x % 10; x /= 10; } if (sum == n) { return true; } else { return false; } } int main() { int n,sum = 0; cin >> n; for(int i = 1;i <= n;i++) { if(huiwen(i)) { sum++; } } cout << sum; return 0; }
-
3
n的范围是1到10000,10000不是回文数,所以用for循环判断从1~n每个数字按一位数、两位数、三位数、四位数即可,首先要计算出该数是几位数,用while循环,只要该数一直大于0,就让该数不断除以10,算出是几位数,其次,判断时分为以下几种情况进行判断:
- 一位数,即为回文数
- 两位数,判断个位和十位是否相等
- 三位数,判断个位和百位是否相等
- 四位数,判断个位和千位、十位和百位是否相等
条件成立,则总和累加,for循环结束之后,输出sum。
for (int i = 1; i <= n; i++) //从1遍历到n,每个数一次去判断 { int cnt = 0;//计数器,记录该数位数 int x = i; //未避免i的值发生变化,用一个临时变量存放该数字 while (x > 0) //计算该数字的位数 { cnt++; x /= 10; } if (cnt == 1) //个位数,sum++ { sum++; } else if (cnt == 2 && (i % 10 == i / 10)) //十位数,个位和十位相等,sum++ { sum++; } else if (cnt == 3 && (i % 10 == i / 100)) //百位数,个位和百位相等,sum++ { sum++; } else if (cnt == 4 && (i % 10 == i / 1000) && (i / 10 % 10 == i / 100 % 10)) { sum++; //千位数,个位和千位、十位和百位相等,sum++ } }
-
2
#include <bits/stdc++.h> using namespace std; bool huiwen(int n1) { int n2 = n1, sum = 0; while (n1 > 0) { sum = sum * 10 + n1 % 10; n1 /= 10; } if (sum == n2) return true; else return false; } int main() { int n, sum = 0; cin >> n; for (int i = 1; i <= n; i++) if (huiwen(i)) sum += 1; cout << sum << endl; return 0; }
-
1
把上一题判断回文数的函数搬下来,修改几句代码就可以了
#include <iostream> using namespace std; bool huiwen(int m) { int m1=m,sum=0; while(m>0) { sum=sum*10+m%10; m/=10; } if (sum==m1) { return true; } else { return false; } } int main() { int n,num=0; cin >> n; for (int i=1;i<=n;i++) { if (huiwen(i)) { num++; } } cout << num; return 0; }
-
1
这题应该不用多说吧,直接把上一题函数搬下来就行了。(函数建议保存,以后应该要用)。
bool huiwen(int x) { int x1=x,sum=0; while(x>0) { sum=sum*10+x%10; x/=10; } return sum==x1;//很多人都是判断,其实这样也行。 }
然后循环判断,如果是回文数就把num增加。
int main() { int n,num=0;cin>>n; for (int i=1;i<=n;i++)if(huiwen(i))num++; cout<<num; return 0; }
连起来就是——
#include <bits/stdc++.h> using namespace std; bool huiwen(int x) { int x1=x,sum=0; while(x>0) { sum=sum*10+x%10; x/=10; } return sum==x1; } int main() { int n,num=0;cin>>n; for (int i=1;i<=n;i++)if(huiwen(i))num++; cout<<num; return 0; }
已AC
刚刚才发现我的代码(完整版),居然是最短的
-
1
#include <bits/stdc++.h> using namespace std; bool huiwen(int n1) { int n2 = n1, sum = 0; while (n1 > 0) { sum = sum * 10 + n1 % 10; n1 /= 10; } if (sum == n2) return true; else return false; } int main() { int n, sum = 0; cin >> n; for (int i = 1; i <= n; i++) if (huiwen(i)) sum += 1; cout << sum << endl; return 0; }
-
1
#include <iostream> using namespace std; bool huiwen(int n1) { int n2 = n1, sum = 0; while (n1 > 0) { sum = sum * 10 + n1 % 10; n1 /= 10; } if (sum == n2) { return true; } else return false; } int main() { int n, sum = 0; cin >> n; for (int i = 1; i <= n; i++) { if (huiwen(i)) { sum += 1; } } cout << sum << endl; return 0; }
-
1
emm。。。。。。 啥也不想说
using namespace std; bool huiwen(int n1) { int n2 = n1, sum = 0; while (n1 > 0) { sum = sum * 10 + n1 % 10; n1 /= 10; } if (sum == n2) return true; else return false; } int main() { int n, sum = 0; cin >> n; for (int i = 1; i <= n; i++) if (huiwen(i)) sum += 1; cout << sum << endl; return 0; }
-
1
首先要计算出该数是几位数,用while循环,只要该数一直大于0,就让该数不断除以10,算出是几位数, 保存在 i 中.
#include <iostream> using namespace std; bool aaa(int x)//判断回文的代码 { int sum=0, i=1, y=x, z=x; while (y>=10) { i*=10;//用 i 保存位数 y/=10; } while (z>0) { a+=z%10*i; i/=10; z/=10; } if (a==x) return 1; else return 0; } int main() { int n, a=0; cin>>n; for (int i=1;i<=n;i++) if (aaa(i)) a++; cout<<a; return 0; }
-
0
废话少说,上AC代码
#include <bits/stdc++.h> int n,s; using namespace std; bool huiwen(int n1)//自定义布尔回文函数 { int n2 = n1, sum = 0; while (n1 > 0) { sum = sum * 10 + n1 % 10; n1 /= 10; } if (sum == n2) return true; else return false; } int main() { cin >> n; for (int i = 1;i<=n;i++) { if (huiwen(i)) s++;//判断计数 } cout << s; return 0; }
点个赞吧
-
0
用python不香吗?
def ishui(n:int): ns=list(str(n)) le=len(ns)-1 mil = len(ns)//2 for i in range(mil): if ns[i] != ns[le-i]: del ns,le,mil,i,n return 0 del ns,le,mil,n return 1 cin = int(input()) ans = 0 for i in range(1,cin+1): if ishui(i): ans += 1 print(ans) del cin,ans,i
最后还要清除痕迹......
- 1
信息
- ID
- 149
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 1327
- 已通过
- 729
- 上传者