20XX年,pascal语言有多了一种新的整型int128。它能够运算10000位的超大数据。今天我们的任务就 是:输入一个类型为int128的数字n(0<=n<=10^10001)。判断它是否为3的倍数。用c语言写出代码
时间: 2024-03-20 13:42:52 浏览: 31
好的,下面是使用C语言实现判断一个int128类型的数字是否为3的倍数的代码:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
int s[10000]; // 数字的每一位
int len; // 数字的位数
} int128;
void read_int128(int128 *a) {
char s[10002];
int i, k;
scanf("%s", s);
a->len = strlen(s);
k = 0;
for (i = a->len - 1; i >= 0; i--) {
a->s[++k] = s[i] - '0';
}
while (k > 1 && a->s[k] == 0) k--;
a->len = k;
}
int is_multiple_of_three(int128 a) {
int i, sum = 0;
for (i = 1; i <= a.len; i++) {
sum += a.s[i];
}
return (sum % 3 == 0);
}
int main() {
int128 n;
read_int128(&n);
if (is_multiple_of_three(n)) {
printf("Yes\n");
} else {
printf("No\n");
}
return 0;
}
```
需要注意的是,由于int128类型的数字太大,需要使用高精度计算,因此代码的运行效率较低。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)