题解 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;  //完美结束
    }
}
发布了9 篇原创文章 · 获赞 1 · 访问量 512

猜你喜欢

转载自blog.csdn.net/live_now/article/details/105024985
今日推荐