将n张贺卡回收再发给同学 每位同学发一张 则每人都分不到自己写的贺年卡的分卡方法有几种 C语言代码
时间: 2024-05-16 17:16:08 浏览: 12
以下是一种用 C 语言实现的分卡方法:
```c
#include <stdio.h>
int main() {
int n; // 贺卡总数
printf("请输入贺卡总数:");
scanf("%d", &n);
int i, j;
for (i = 1; i <= n; i++) {
printf("第%d个同学拿到的贺卡编号为:", i);
for (j = 1; j <= n; j++) {
if (j != i && j != i % n + 1) {
printf("%d ", j);
}
}
printf("\n");
}
return 0;
}
```
运行该程序,输入贺卡总数后,程序会输出每位同学拿到的贺卡编号。其中,第 i 个同学拿到的贺卡编号为除了 i 本人和编号为 i 取模 n + 1 的同学(即自己写的贺卡)之外的所有编号。这样,就能保证每位同学都分不到自己写的贺卡了。
例如,当贺卡总数为 4 时,程序输出如下:
```
请输入贺卡总数:4
第1个同学拿到的贺卡编号为:2 3 4
第2个同学拿到的贺卡编号为:1 3 4
第3个同学拿到的贺卡编号为:1 2 4
第4个同学拿到的贺卡编号为:1 2 3
```
相关问题
用turtle库做一张贺卡送给你的朋友,并将py文件转换成exe文件
好的,我可以为您提供相关的代码和步骤。首先,我们需要安装pyinstaller库来将.py文件打包成.exe文件。可以使用以下命令进行安装:
```
pip install pyinstaller
```
接下来,我们可以使用turtle库来绘制贺卡。以下是一个简单的示例代码:
```python
import turtle
# 设置画布大小
turtle.setup(800, 600)
# 设置画笔颜色和宽度
turtle.pensize(5)
turtle.pencolor("red")
# 绘制心形
turtle.fillcolor("pink")
turtle.begin_fill()
turtle.left(45)
turtle.forward(150)
turtle.circle(75, 180)
turtle.right(90)
turtle.circle(75, 180)
turtle.forward(150)
turtle.end_fill()
# 写上祝福语
turtle.penup()
turtle.goto(0, -200)
turtle.pencolor("black")
turtle.write("Happy Birthday!", align="center", font=("Arial", 24, "bold"))
# 隐藏画笔
turtle.hideturtle()
# 点击关闭窗口
turtle.exitonclick()
```
运行以上代码可以绘制一个心形贺卡,您可以根据需要进行修改。接下来,我们可以使用以下命令将.py文件转换为.exe文件:
```
pyinstaller --onefile your_file_name.py
```
执行以上命令后,会在dist目录下生成一个可执行文件。将该文件发送给您的朋友即可。
希望这个回答能够帮到您!
C++编程解决:新年快到了,笑笑打算给他的好朋友们发贺年卡,而且他已经选好了自己要购买的贺卡的样式。俗话说得好,货比三家,笑笑来到商店,看了各个商铺这种贺卡的价钱。不仅如此,笑笑还记住了每个商铺的存货量。已知笑笑打算购买m张贺卡,问他最少花多少钱。
这道题可以使用贪心算法来解决。我们可以将每张贺卡的价格和存货量存储在一个二元组中,然后按照价格从小到大排序。接着,我们可以从价格最低的贺卡开始购买,每次购买一张贺卡,直到购买满m张贺卡或者某个商铺的存货量不足。
C++代码如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<pair<int, int>> cards(n); // 存储每张贺卡的价格和存货量
for (int i = 0; i < n; i++) {
cin >> cards[i].first >> cards[i].second;
}
sort(cards.begin(), cards.end()); // 按价格从小到大排序
int ans = 0;
int cnt = 0; // 已购买的贺卡数量
for (int i = 0; i < n && cnt < m; i++) {
int num = min(m - cnt, cards[i].second); // 还需要购买的数量
ans += num * cards[i].first;
cnt += num;
}
cout << ans << endl;
return 0;
}
```
输入样例:
```
5 8
3 2
5 3
2 1
8 4
6 5
```
输出样例:
```
51
```
解释:购买3张价值为2的贺卡,2张价值为3的贺卡,3张价值为5的贺卡,共计51元。
相关推荐
![.rar](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)