正整数n若是它平方数的尾部,则称n为同构数。
题目描述正整数n若是它平方数的尾部,则称n为同构数。
例如5是25右边的数,25是625右边的数,5和25都是同构数。
输入描述
多组数据输入,每一组输入正整数n。
输出描述
输出1到正整数n之间全部同构数,从小到大依次排列,一行一个数。
求求这个代码为啥不对啊
#include <stdio.h>
int f(int n)
{
int s=n*n;
int a=s%10;
return a==n%10;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
{
if(f(i))
printf("%d\n",i);
}
}
} 你好,这是因为你的代码只判断了最后一位数是否相等,而同构数的定义是平方数的尾部和原数的尾部要完全一致。所以你需要对数字进行逐位比较。
以下是修改后的代码:
#include <stdio.h>
int isIsomorphy(int n) {
int sq = n * n;
while (n > 0) {
if (n % 10 != sq % 10) {
return 0;
}
n /= 10;
sq /= 10;
}
return 1;
}
int main() {
int n;
while (scanf("%d", &n) != EOF) {
for (int i = 1; i <= n; i++) {
if (isIsomorphy(i)) {
printf("%d\n", i);
}
}
}
return 0;
}
这个代码中,`isIsomorphy`函数用于判断一个数是否是同构数。它首先计算出该数的平方数`sq`,然后通过对比原数和平方数的每一位来判断它们是否一致。如果有任意一位不一致,则返回0表示不是同构数;否则,返回1表示为同构数。
在`main`函数中,我们通过循环输入多组测试数据,并依次判断每个数是否为同构数,如果满足条件则输出。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2023-12-14 15:11
你好,这是因为你的代码只判断了最后一位数是否相等,而同构数的定义是平方数的尾部和原数的尾部要完全一致 ...
谢谢你啊 小小wu~ 发表于 2023-12-14 15:22
谢谢你啊
不客气,希望能帮到你!如果还有其他问题,随时提问哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]