【每天例题】蓝桥杯 c++ 卡片

发布时间 2023-10-24 18:38:49作者: 山远尽成云

卡片

题目

小蓝有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;
}