1 条题解
-
0
思路分析
1. 任务拆解:
- 读取整数n
- 遍历1到n的所有数字
- 判断每个数字i是否是同构数(i出现在i²的右端)
- 统计同构数的个数
- 输出统计结果
2. 关键点分析:
- 同构数定义:数字i出现在i²的末尾
- 同时检查i和i²的对应位是否相等
- 从最低位开始逐位比较
- 如果i的所有位都与i²的对应位匹配,则是同构数
3. 步骤规划:
- 读取n的值
- 初始化计数器c=0
- 循环遍历1到n的每个数字i:
- 计算i²
- 设置临时变量i1=i,i2=i²
- 循环比较i1和i2的每一位:
- 获取i1和i2的个位数字
- 如果不相等,跳出循环
- 删除个位数继续比较
- 如果i1变为0(所有位都匹配),计数器加1
- 输出计数器值
4. 代码对应:
cin>>n;→ 读取整数nfor(int i=1;i<=n;i++)→ 遍历1到nint i2=i*i,i1=i;→ 计算平方并保存临时变量while(i1)→ 逐位比较w1=i1%10; w2=i2%10;→ 获取个位数字if(w1!=w2) break;→ 如果对应位不相等则跳出i1/=10; i2/=10;→ 删除个位数继续比较if(i1==0) c++;→ 如果所有位都匹配则计数cout<<c;→ 输出同构数的个数
- 1
信息
- ID
- 793
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 198
- 已通过
- 104
- 上传者