Candy Bags / 糖果袋(整数算法问题)

这篇博客介绍了Gerald如何将不同数量糖果的n平方个袋子平均分配给n个弟弟的问题。每个弟弟应该得到相同数量的糖果,且每个袋子包含1到n平方的糖果。解决方案涉及从两端取袋子的策略,确保每个弟弟拿到n个袋子,总共n平方个糖果。文章提供了一个C语言的简单实现,并邀请读者批评指正。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gerald 有n个弟弟,并且他们的人数是偶数。一天,他买了n的二次方袋糖(比如2个弟弟,买了4袋糖),一个袋子有一颗糖,一个袋子有两颗糖,一个袋子有三颗糖,以此类推。事实上,对每一个从1到n的平方间(比如本例中的1到4)的整数k,他都有一个装有k颗糖果的袋子。

帮助他把n平方个袋子分给每一个弟弟使得所有弟弟得到相同数量的糖果。
输入
仅有一行,包括一个整数n,(n是偶数,2 ≤ n ≤ 100)——Gerald的弟弟的人数。
输出
假设Gerald对他的弟弟们从1到n的标号建了索引。你需要打印n行,在第i行打印n个整数——给第i个弟弟糖果袋的糖果数量。当然所有这些数字都应该是不同的,并且限制在1到n平方之间。你可以用任意的顺序打印这些行的数字。
要保证在给定限制下有解。
输入
2
输出
1 4
2 3
注意
测试用例是当Gerald有两个弟弟时他的分配结果。在这个例子中,他的糖果袋包括1,2,3和4颗糖果。他把装有1颗和4颗糖果的袋子给一个弟弟,把装有2颗和3颗的袋子给另一个弟弟。
输入输出样例:1组
#1
样例输入:
2
样例输出:
1 4
2 3


分析:有n个弟弟,有n*n个袋子,每个袋子的糖果数为1 2 3 …… …… n *n。 全部糖果要平均分给n个弟弟,且每个弟弟拿的袋子数为n。
所以拿了第一个的一个糖果的袋子的弟弟,就必须拿第n *n。
因此,定义两个变量 i k。 i从第一个袋子往后取,k从第n *n个袋子往前取。并且 i 只要取够n/2个,即,按照上面所讲的整体取够n个 就可以完成一个平分。

int n,i,k,num;
scanf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值