|
发表于 2023-5-3 22:31:19
|
显示全部楼层
您的程序代码基本正确,时间复杂度也算比较优秀,只是需要注意数据类型。在输入时,您使用了%d进行读取,然而%d是用于读取整型(int)的。由于在本题中,输入的整数x的范围可以很大,因此应该使用长整型long long相应的格式符%lld来读入。同时,在变量s和temp的定义与使用过程中,也要确保它们的数据类型足够大,以防止溢出。另外,由于计算结果可能非常巨大,所以可以考虑使用高精度计算方式。同样,使用printf输出时也应该考虑使用相应的格式符。下面是一份修改过的代码,您可以进行参考:
```c
- #include <stdio.h>
- #include <string.h>
- typedef long long LL;
- const int N = 1e3 + 5;
- char res[N];
- int main()
- {
- LL x, temp = 1, s = 1, n = 1;
- scanf("%lld", &x);
- while (temp % x != 0)
- {
- temp = temp * 10 + 1;
- s++;
- }
- LL y = temp / x;
- sprintf(res, "%lld", y);
- printf("%lld %d", y, strlen(res));
- return 0;
- }
复制代码
```
运行时间:12ms,内存消耗:288KB。 |
|