

感觉自己很蠢
没看到最下面的数据范围约定
后来改int为long long忘了输出的时候改为%lld
受不了
代码如下:
#include<stdio.h>
#include<stdlib.h>
int cmp(const void * a, const void * b);
long long roll(long long num);
long long list[10][3];
int main(void)
{
for(int i = 0; i < 10; i++)
{
long long num, n, m, count = 0;
scanf("%lld", &num);
n = num;
do
{
m = roll(n);
if(m == n) break;
count++;
}while((n = m + n) != roll(n));
list[i][0] = num, list[i][1] = count, list[i][2] = n;
}
qsort(list, 10, 3 * sizeof(long long), cmp);
for(int i = 0; i < 10; i++)
{
if(i) putchar('\n');
printf("%lld %lld %lld", list[i][0], list[i][1], list[i][2]);
}
return 0;
}
long long roll(long long num)
{
long long r_num = 0;
while(num)
{
r_num *= 10;
r_num += num % 10;
num /= 10;
}
return r_num;
}
int cmp(const void * a, const void * b)
{
if(* ((long long *) a + 1) > * ((long long *) b + 1))
return -1;
else if(* ((long long *) a + 1) == * ((long long *) b + 1))
{
if(* ((long long *) a + 2) > * ((long long *) b + 2))
return 1;
else if(* ((long long *) a + 2) == * ((long long *) b + 2))
return * (long long *) a - * (long long *) b;
else
return -1;
}
else
return 1;
}
又偷偷用了qsort
算是巩固记忆
下次不用了
本文介绍了使用C语言编写的一个程序,涉及整数类型转换、滚动函数、数组操作和快速排序。作者通过实践巩固对内存管理和数值计算的理解,表示以后将不再依赖此方法。
711

被折叠的 条评论
为什么被折叠?



