解题思路:
第一次:1+(1+2+3+4+5)=16
第二次:16+(6+7+8+9+10)=56
第三次:56+(11+12+13+14+15)=?
第x次:s[x-1]+((x-1)*n+1+x*n)*n/2=?
(x-1)*n+1为后面等差数列的第一个数
(x*n)为后面等差数列的最后一个数
再运用等差数列求和公式即可得到结果。
注意事项:
n,k,T 一定是longlong;
参考代码:
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int i = 1;//ci shu
long long 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++;
x = x%k;
sum += x;
add = x;
}
printf("%lld", sum);
return 0;
}
0.0分
5 人评分
#include<stdio.h> int main() { int j=0,i,k,n,T,v=0; long long s=0; scanf("%d %d %d",&n,&k,&T); int m[n*T-n+1]; int d=1,x=1; for(i=1;i<n*T-n+1;i++) { m[0]=1; m[i]=m[i-1]+d; d++; } for(i=1;i<n*T-n+1;i++) { while(m[i]>k-1) { m[i]=m[i]-(k-1)-1; } } for(i=0;i<n*T-n+1;i++) { if(i+1==x) { s=s+m[i]; x=x+n; } } printf("%lld\n",s); return 0; }//这个显示运行错误是怎么回事啊
请大佬帮我看看,我输的每个数结果都能对上,就是一直运行错误 #include<stdio.h> int main() { int n, k, T; //人数,不超过几,说的个数 int i,j=1,a[1000000]; scanf("%d %d %d", &n ,&k, &T); a[1] = 1; for (i = 2; i <= T* n+1; i++) { a[i] =(a[i-1]+j)%k; j++; } long long int sum = 0; //a[1] a[1+n] a[1+n+n] for (i = 1; i <= (T-1)*n+1; i+=n) { sum += a[i]; } printf("%lld", sum); return 0; }
#include <stdio.h> int main() { int n, k, t, sum = 0, a = 0, b = 1, c = 0, d, e = 0; scanf("%d %d %d", &n, &k, &t); while (b < k - 1) { b = b + a; c = c + 1; a = a + 1; if ((c - 1) % 3 == 0) { sum = sum + b; e = e + 1; } if(e==t) { printf("%d",sum); break; } if (b+a>k) { d = b; b = a - (k - 1 - d) - 1; c = c + 1; a = a + 1; } } return 0; } 大佬们,帮我看看,这哪里不对啊
好好学习 2022-03-29 21:01:23 |
提交显示答案错误,可是我输出就是17.......
为什么输入n,k,T,都需要定义为long long,为什么不能用int
大小写转换 (C语言代码)浏览:844 |
蛇行矩阵 (C语言代码)浏览:744 |
C二级辅导-公约公倍 (C语言代码)浏览:482 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:455 |
简单的a+b (C语言代码)浏览:635 |
C二级辅导-等差数列 (C语言代码)浏览:770 |
简单的a+b (C++代码)浏览:438 |
图形输出 (Java代码)浏览:453 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:523 |