首页 > 试题广场 >

牛牛学数列

[编程题]牛牛学数列
  • 热度指数:17492 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}牛牛开始学习数列啦。现在他想计算以下数列前 n 项的和:

\displaystyle S(n) = \sum_{i=1}^{n}(-1)^{\,i-1}\times i = 1 - 2 + 3 - 4 + \cdots + (-1)^{\,n-1}n

\hspace{15pt}请你计算并输出 S(n) 的值。

输入描述:
\hspace{15pt}在一行中输入一个正整数 n,满足 1 \leqq n \leqq 100


输出描述:
\hspace{15pt}输出一个整数,表示 S(n) 的值。
示例1

输入

4

输出

-2

说明

S(4) = 1 - 2 + 3 - 4 = -2
#include <stdio.h>

int main()
{
    int a = 0;
    scanf("%d", &a);

    int sum = 0; // 接收计算的数值

    for (int i = 1; i <= a; i++)
    {
        if (i % 2 == 0) // S(4)=1−2+3−4=−2,    -2  -4  规律是偶数位负数
        {
            sum -= i; // 所以只要是偶数 就 - i
        }
        else
        {
            sum += i; // 是奇数 就 + i
        }

    }

    printf("%d", sum);

    return 0;
}
发表于 2025-06-14 22:54:59 回复(0)
#include <stdio.h>
int main() {
    int a = 0;
    while (scanf("%d", &a) != EOF) {
        int n = a; //循环次数
        int sum = 0;
        for (int i = 0; i <= n; i++) {
            if (i % 2 == 0) {
                sum = sum - i;
            } else {
                sum = sum + i;
            }
        }
        printf("%d\n", sum);
    }
    return 0;
}
发表于 2025-02-11 16:02:12 回复(0)
#include<stdio.h>


int main()
{
    int i = 0;
    int result = 0;
    int n = 0;
    scanf("%d",&n);

    for(i=1;i<=n;i++)
    {
        if(i%2 ==0)
        {
            result =result-i;
        }
       else
        {
          result = result +i;
       }
    }
    printf("%d",result);

    return 0;
}

发表于 2024-12-11 16:29:06 回复(0)
#include <stdio.h>

int main()
{
    int a,b=0,n,c=1;
    scanf("%d",&n);
    for(c=1;c<=n;c++)
    {
        if(c%2==0)
        {
            b=b-c;
        }
        if(c%2==1)
        {
            b=b+c;
        }
    }
    printf("%d",b);
    return 0;
}
发表于 2024-11-30 19:57:26 回复(0)
#include<stdio.h>

int main()
{
    int n,a,sum=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        if(i%2) a=i;
        else a=-i;
        sum+=a;
    }
    printf("%d",sum);
    return 0;
}
发表于 2024-09-07 16:46:09 回复(0)
#include <stdio.h>

int main() {
    int n;
    int sum = 0;
    scanf("%d",&n);
    if(n%2==0){
        sum=-n/2;
    }else if(n%2==1){
        sum=(n+1)/2;
    }
    printf("%d",sum);
    return 0;
}
发表于 2024-07-04 21:33:00 回复(0)
#include <stdio.h>

int main() {
    int a, b,sn=0;
   scanf("%d",&a);
   for(b=1;b<=a;b++)
   {
       if(b%2!=0)
       sn+=b;
       else
        sn-=b;
   }
   printf("%d",sn);
    return 0;
}
发表于 2024-04-27 00:17:09 回复(0)
#include <stdio.h>

int main() 
{
    //方法一 分成奇偶部分
    // int n = 0;
    // scanf("%d", &n);
    // int i = 0;
    // int sum1 =0, sum2 = 0;
    // for(i = 1;i <=n; i+=2)  //计算奇数部分的和
    // {
    //     sum1 += i;      
    // }
    // for(i = 2; i<=n;i+=2)   //计算偶数部分
    // {
    //     sum2 += i;
    // }
    // printf("%d",sum1-sum2);

    //方法二 可以在优化成两个等差数列的和
    int n = 0;
    scanf("%d", &n);
    if(n%2 ==0)
    {
        //有n/2个负,1-2 =-1 3-4 = -1
        printf("%d",-n/2);
    }
    else 
    {   //1-2 =-1 3-4 =-1 5
        printf("%d",-(n-1)/2 + n);
    }

    return 0;
}

发表于 2024-04-21 02:26:41 回复(0)
#include <stdio.h>

int XXX(int n) {
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        if (i % 2 == 1) {
            sum += i;
        }
        if (i % 2 == 0) {
            sum -= i;
        }
    }
    return sum;
}

int main() {
    int n;
    scanf("%d", &n);
    n = XXX(n);
    printf("%d", n);
    return 0;
}
编辑于 2024-01-20 09:45:52 回复(0)
#include <stdio.h>
int main()
{
    int n = 0;
    int sum = 0;
    int flag = 1;
    scanf("%d",&n);
    for(int i = 1; i <= n; i++)
    {
      sum+=i * flag;
      flag = -flag;
    }
    printf("%d",sum);
    return 0;
}

编辑于 2023-12-25 20:25:12 回复(0)
#include<stdio.h>
int main()
{
    int a,sum;
    scanf("%d",&a);
    if(a%2==0)
    {
    sum=-(a/2);
    printf("%d",sum);
     }
     else if(a%2!=0)
     {
        sum=-(a-1)/2+a;
     printf("%d",sum);
     }
    return 0;
 }

发表于 2023-10-31 08:22:50 回复(0)
#include <stdio.h>

int main()
{
    int flag = 1, n = 0, m = 0, i = 0;
    scanf("%d", &n);
    while (n != EOF)
    {
        for (i = 1; i <= n; i++)
        {
            m = m + i * flag;
            flag = -flag;
        }
        printf("%d",m);
        break;
    }
    return 0;
}
发表于 2023-10-29 15:08:41 回复(0)
#include <stdio.h>
int main(){
	int j;//结束值 
	scanf("%d", &j);
    int a = 0;
	int sum = 0;
	int i;//初始值 
	for(i=1;i<=j;i++){
		if(i%2==0){
			sum = a - i ;
		}else if(i%2!=0){
			sum = a + i;
		}
			a = sum;
	} 
	printf("%d\n",sum);
} 

发表于 2023-06-21 17:46:11 回复(0)
#include <stdio.h>
int main() {
    int a = 0;
    scanf("%d",&a);
    int b = 1;
    int k = 0;
    int c = 1;
    for(b = 1;b<=a;b++)
    {
        k = k+b*c;
        c =-c;
    }
    printf("%d",k);
    return 0;
}
发表于 2023-05-27 16:34:36 回复(1)
#include <stdio.h>

int main() {
    int i = 0;
    int j = 0;
    int odd = 0;
    int even = 0;
    scanf("%d", &i);
    for(j = 1; j <= i; j++)
    {
        if(j % 2 != 0)
        {
            odd += j;
        }
        else {
            even -= j;
        }
    }
    printf("%d", odd + even);
    return 0;
}
发表于 2023-02-27 20:31:19 回复(0)
#include <stdio.h>
int main()
{
    // 准备变量n,为运算的边界值
    int n;
    // 准备变量sum,接收运算的结果
    int sum = 0;
    while (scanf("%d", &n) != EOF)
    {
        for (int i = 1; i <= n; i++)
        {
            // 一般情况
            // round 1 -> sum = 0, i = 1, sum = sum + i = 1
            // round 2 -> sum = 1, i = 2, sum = sum + i = 3
            // round 3 -> sum = 3, i = 3, sum = sum + i = 6

            // 题目要求当i为偶数时,取负号
            if (i % 2 == 0)
            {
                sum = sum + (-1 * i);
            }
            else
            {
                sum = sum + i;
            }
        }
        printf("%d\n", sum);
    }
    return 0;
}
发表于 2023-02-19 15:02:53 回复(0)
#include <stdio.h>

int main() {
    int n;
    scanf("%d",&n);
    if (n%2==0) {
        printf("%d",-n/2);
    }else {
        printf("%d",-(n-1)/2+n);
    }
    return 0;
}
发表于 2023-01-23 10:32:06 回复(0)
#include <stdio.h>

int main( ) {
    int n, sum;
    scanf("%d", &n);

    if (n % 2 == 0) {
        sum = (-n) / 2;
    } else {
        sum = (-n) / 2 + n;
    }
    printf("%d", sum);
    
    return 0;
}

发表于 2022-10-07 01:11:49 回复(0)

问题信息

上传者:牛客301599号
难度:
42条回答 3192浏览

热门推荐

通过挑战的用户

查看代码
牛牛学数列