|
发表于 2021-3-20 00:05:20
|
显示全部楼层
提问,为什么这3个程序的输出不一样?
- #include <stdio.h>
- int main(void)
- {
-
- int n, k, T, i = 1, j;
- int sum = 1, count = 1, num = 1;
- scanf("%d %d %d", &n, &k, &T);
-
- for(j = 1; j <= n; ++j)
- {
- if(i == T)
- {
- break;
- }
-
- num += count;
- count++;
- if(num > k)
- {
- num = num + count - k;
- }
-
-
- if(j == n)
- {
- sum += num;
- i++;
- j = 1;
- }
- }
-
- printf("%d", sum);
- return 0;
- }
复制代码
- #include <stdio.h>
- int main(void)
- {
- //int n, k, T, i = 1, j;
- int n, k, T, i = 0, j;
- //int sum = 1, count = 1, num = 1;
- int sum = 0, count = 1, num = 1;
- scanf("%d %d %d", &n, &k, &T);
- //for(j = 1; j <= n; ++j)
- for(j = 0; j <= n; ++j)
- {
- if(i == T)
- {
- break;
- }
- //num += count;
- //count++;
- if(num > k)
- {
- //num = num + count - k;
- num = num - k;
- }
- //if(j == n)
- if(j == 0 || j == n)
- {
- sum += num;
- i++;
- //j = 1;
- j = 0;
- }
- num += count;
- count++;
- }
- printf("%d", sum);
- return 0;
- }
复制代码
- #include <stdio.h>
- #define LL long long int
- int main(void) {
- int i = 1;
- LL sum = 1, x, add = 1, n, k, t;
- scanf("%lld%lld%lld",&n,&k,&t);
- while (i < t) {
- x = add + ((i-1)*n + 1 + i*n)*n/2; // 得到这次这个人所报的数字
- i++; // 过这个人的次数加1
- x = x % k; //当大于k的部分需要返回
- sum += x; //数字和
- add = x; // 返回
- }
- printf("%lld",sum);
- return 0;
- }
复制代码 |
|