gpt4 book ai didi

c - 为什么我在 C 代码中对于某些输入得到错误的答案?

转载 作者:行者123 更新时间:2023-11-30 15:01:39 28 4
gpt4 key购买 nike

这次你的任务很简单。

给定两个整数 X 和 K,找到通过改变数字 x 中最多 K 位的数字可以形成的最大数字。

输入:

输入的第一行包含两个整数X和KK 用一个空格分隔。

输出:

打印单行中形成的最大数字。

限制:

1 < X < 10^18

0

代码-

int main()
{
long long x ;
scanf("%llu" , &x);

int k ;
scanf("%d" , &k);

long long max = (int)log10(x) + 1 ;

int arr[max] ;


long long temp = x ;
long long i ;
for(i = max -1 ; i >= 0 ; i-- )
{
arr[i] = temp % 10 ;
temp = temp / 10 ;
}

i = 0 ;
int cnt = k ;
while(cnt != 0)
{
if(arr[i] != 9)
{
arr[i] = 9 ;
cnt = cnt - 1 ;
}

i = i + 1 ;

}

int power = max -1 ;
long long answer = 0 ;
for(i = 0 ; i < max ; i++)
{
answer = answer + arr[i] * pow(10,power) ;
power = power -1 ;
}

printf("%llu" , answer );

return 0;
}

获得部分正确的输出

给定输入的输出错误 -

242358001399388784 9

169232736841900368 4

正确的输出 -

14500679550767648 1

8330936799410214 9

最佳答案

无需计算答案。您可以通过打印数组来简单地绕过它。

#include<bits/stdc++.h>
int main()
{
long long int x ;
scanf("%lld" , &x);

int k ;
scanf("%d", &k);

long long int max = (int)log10(x) + 1 ;

int arr[max] ;


long long int temp = x ;
long long int i ;
for(i = max -1 ; i >= 0 ; i-- )
{
arr[i] = temp % 10 ;
temp = temp / 10 ;
}

i = 0 ;
int cnt = k ;
while(cnt != 0)
{
if(arr[i] != 9)
{
arr[i] = 9 ;
cnt = cnt - 1 ;
}

i = i + 1 ;

}

// JUST PRINT THE ARRAY
for(i=0;i<max;i++)
printf("%d",arr[i]);
return 0;
}

关于c - 为什么我在 C 代码中对于某些输入得到错误的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41305890/

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