gpt4 book ai didi

c - C 语言的欧拉计划 145

转载 作者:行者123 更新时间:2023-11-30 21:39:12 26 4
gpt4 key购买 nike

我给出了问题的链接。抱歉给您带来了麻烦。

https://www.hackerrank.com/contests/projecteuler/challenges/euler145

在上题中,当n为1000时,结果是120,这是正确的,但当n=948时,结果仍然是120,这是错误的。

    # include <stdio.h>
# include <math.h>
int check(int n)
{
if(n%10==0)
{
return 0;
}
else
{
return 1;
}
}
int rev(int n)
{
int s=0;
while(n!=0)
{
s=s*10+n%10;
n=n/10;
}
return s;
}

int count(int a)
{
int c=0;
while(a!=0)
{
c++;
a=a/10;
}
return c;
}

int odd(int k)
{
if(k%2!=0)
{
return 1;
}
else
{
return 0;
}
}

int digit(int n,int p)
{
int k=0,c=0;
while(n!=0)
{
k=n%10;
if(odd(k)==1)
{
c++;
}
n=n/10;
}
if(c==p)
{
return 1;
}
else
{
return 0;
}
}

int result(int n)
{
int s=0,k=0,i=1,m=0,j=0;
for(i=0;i<n;i++)
{
if(check(i)==1)
{
s=i+rev(i);
k=count(s);
m=digit(s,k);
if(m==1)
{

j++;
}
}
}
return j;
}



int main()
{
int n=0,t=0,p=0,k=0,c=1,a[1000],i;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&n);
a[i]=result(n);
}
for(i=0;i<t;i++)
{
printf("\n %d",a[i]);
}
return 0;
}

请帮助我解决问题,因为我是 C 语言的新手(过去三周我一直在学习 C),我的代码绝对不是您在网上找到的最好的代码。任何帮助将不胜感激。

最佳答案

问题出在你的循环控制上

for(i=1;i<=n;i++)

因此,当 n 为 1000 时,您将包含 n。但问题是低于 1000

当您在循环中更改该条件时,1000 的答案仍为 120,但 948 的答案变为 119,这是正确答案。

应该是

for(i=1; i<n; i++)

关于c - C 语言的欧拉计划 145,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38040641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com