卡片
题目
小蓝有k种卡片,—个班有n位同学,小蓝给每位同学发了两张卡片,—位同学的两张卡片可能是同一种,也可能是不同种,两张卡片没有顺序。没有两位同学的卡片都是一样的。 小蓝有k种卡片,-个班有n位同学,小蓝给每位同学发了两张卡片,-位同学的两张卡片可能是同一种,也可能是不同种,两张卡片没有顺序.没有两位同学的卡片都是一样的.
给定n,请问小蓝的卡片至少有多少种? 给定n,请问小蓝的卡片至少有多少种?
输入格式
输入—行包含—个正整数表示n。 输入一行包含一个正整数表示n.
输出格式
输出—行包含一个整数表示答案。 输出一行包含一个整数表示答案.
样例输入
6
样例输出
3
样例说明
小朋友们手中的卡片可能是: (1,1),(1,2),(1,3),(2,2),(2,3),(3,3) 小朋友们手中的卡片可能是:(1,1),(1,2),(1,3),(2,2),(2,3),(3,3)
题目分析
这道题归根到底就是找规律,我们另x为参加人的数目,y为卡片种类
x | y |
0 | 0 |
1 | 1 |
2 | 2 |
3 | 2 |
4 | 3 |
5 | 3 |
6 | 3 |
7 | 4 |
8 | 4 |
9 | 4 |
10 | 4 |
11 | 5 |
12 | 5 |
13 | 5 |
14 | 5 |
15 | 5 |
从表格中我们可以发现,设i为卡片种类数目,则存在如下关系:
a[0]=0; a[1]=1; a[2]=3; a[3]=6; a[4]=10; a[5]=15; ........ a[i]=a[i-1]+i;
当输入的人数x小于等于卡片种类数目的最大人数,便输出对应的卡片种类。
代码
#include <iostream> using namespace std; int main() { int a[100000]; a[0]=0; a[1]=1; int n,i; cin>>n; for(i=2;i<100000;i++) { a[i]=a[i-1]+i; if(n<=a[i]) { break; } } cout<<i; return 0; }
标签:同学,卡片,int,两张,蓝桥,小蓝,c++,例题 From: https://www.cnblogs.com/hcrzhi/p/17785496.html