输入2个整数m和n,满足n能被m整除,对于一连串整数数列1,2,3,4,5.......,每间隔m个符号翻转一次,求前n项的和。
例:n=8,m=2 时,-1,-2,3,4,-5,-6,7,8
n=4,m=1时,-1,2,-3,4
定义一个flg保存正负号,当余数为0,就乘-1
int main()
{
int m, n;
printf("请输入m和n的值\n");
scanf("%d %d", &m, &n);
int sum = 0;
int flg = -1;
for (int i = 1; i <=n; i++)
{
sum += i * flg;
if (i % m == 0)
{
flg *= -1;
}
}
printf("该数列的值为:%d", sum);
return 0;
}
简化代码,观察其例子,和为m*(n/2)
int main()
{
int m, n;
printf("请输入m和n的值\n");
scanf_s("%d %d", &m, &n);
printf("该数列的值为:%d", m*(n/2));
return 0;
}
但是以上在测试代码时只会显示完成度为百分之80,因为有可能输入的数据溢出int的值。
int main()
{
long long m, n;
printf("请输入m和n的值\n");
scanf_s("%lld %lld", &m, &n);
printf("该数列的值为:%lld", m*(n/2));
return 0;