题解 CF334A 【Candy Bags】

这么水的一道题竟然没有题解,对本蒟蒻等只会刷水题的人写题解产生了莫大的鼓励,希望能帮到像我一样的广大蒟蒻们


言归正传。作为一名小学生,一看到这道题就有一种熟悉感扑面而来。想必大家在小学时一定做过这样的题目,例如从1加到100的这种高斯求和的问题,一开始,数学老师们都会让我们这样去做:把1和100配对,2和99配对,3和98配对,4和97配对,以此类推。这种经(hao)典(sha)的方法也能运用到这道题中。因为文中说“第i块的权值为i”,所以我们就能把它看作一个从1到n的平方的等差数列,这里分两种情况讨论:
1.n的平方为偶数
直接按照刚才配对的方法,把每组数挨个输出(记得要换行!),直接退出主程序就行了。
2.n的平方为奇数
整体思路和偶数的一样,但是要在输出时的最后一行输出中间的数。
好了,思路说完了,下面上AC代码:

#include <bits/stdc++.h>
using namespace std;
int main ()
{
    int n;
    scanf("%d",&n);  //标准输入
    if(n*n%2==0){  //判断是否为偶数
        for(int i=1,j=n*n;i<=j,j>=i;i++,j--)   //设i和j为循环变量
            cout<<i<<" "<<j<<"\n";  //输出
        return 0;  //完美结束
    }
    else {   //判断是否为奇数
        for(int i=1,j=n*n;i<j,j>i;i++,j--)  //设i和j为循环变量
            cout<<i<<" "<<j<<"\n";  //输出
        cout<<n*n/2+1<<"\n";  //输出中间的数
        return 0;  //完美结束
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值