讲课例题

1、

题目描述 
管少(17级计算机大佬)在一栋楼房(农大东校宿舍)下面,楼房一共有n层,第i层每秒有pi的概率会扔下一个东西并砸到管少
求第一秒内管少被砸到的概率
输入描述:
第一行一个整数n
之后有n行,第i+1行有两个整数ai,bi(ai<=bi),表示被砸到概率为ai/bi
输出描述:
若是0则输出0,其他答案输出为分数形式
样例输入
2
1 2
1 2
样例输出
3/4
备注:
数据范围
0 ≤ n ≤ 10000
0≤ ai 
1≤ bi ≤ 10000

#include<bits/stdc++.h>
using namespace std;
int gcd(long m,long n)
{
    while (n != 0)
    {
        long rem = m % n;
        m = n;
        n = rem;
    }
    return m;
}
int main()
{
    int n;
    int a,b;
    int s1=1,s2=1;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>a>>b;
        s1*=(b-a);
        s2*=b;
    }
    int s=gcd(s1,s2);
    if((s2-s1)/s==0)
    {
        cout<<0;
    }
    else
    {
        cout<<(s2-s1)/s<<"/"<<s2/s;
    }
}
严厉的费老师
Description

费老师是一个对偷懒的学生毫不留情的老师(滑稽保命!),有一天他布置了一个作业,要求反复完成多次,但是有同学偷奸耍滑,只做了一次便跑出去玩了。费老师表示很生气!他要逮到第一个开始这种偷懒作风的同学,让他吞掉纪学长养在集训室里面的仙人掌!那么请问这个倒霉鬼会是谁呢?


Input

给出一个整数n,代表学生做作业的总次数,接着的n行给出n个字符串,字符串的值代表学生的名字,每个字符串的出现次数和顺序代表了做作业的次数和顺序。n<=100000


Output

只做了一次作业就跑出去玩的同学名字(第一个只出现一次的字符串)


Sample Input 1 

6
yuheng
yuheng
moubingstudent
lsd
lsd
lwy
Sample Output 1

moubingstudent
Sample Input 2 

3
lsd
yuheng
lsd
Sample Output 2

yuheng
Hint

如果yh学长出完这个题之后便再也没了音讯,每年清明记得缅怀一下
#include<bits/stdc++.h>
usingnamespacestd;
map<string,int>stu;
vector<string>name;
intmain()
{
	intn;
	cin>>n;
	while(n--)
	{
		stringtemp;
		cin>>temp;
		name.push_back(temp);
		stu[temp]++;
	}
	for(inti=0;i<name.size();i++)
	{
		if(stu[name.at(i)]==1)
		{
			cout<<name.at(i)<<endl;
			break;
		}
	}
}
Problem 1   于衡的布偶【排序,贪心】
众所周知,于衡喜欢毛茸茸的东西,于是决定在双十一疯狂购物。已知双十一当天共有n个毛茸茸的布偶在售卖,价格分别为a1, ,a2……an  。于衡只有m元钱,但他是个贪心的孩子,他想在不超出预算的情况下买到最多的布偶,请问于衡能最多买到多少布偶,输出买到的布偶数和剩下的可以用来吃土的钱。
输入:
第一行:两个整数 n和m;(n<=50,m<=10000)
第二行:n个整数,每个玩具的花费 a1, ,a2……an(价格为不超过1000的整数)
输出:
两个整数:1.能买到的布偶个数 2.剩余的金钱

输入样例1:
  5 30
  2 18 5 7 9
输出样例1:
  4 7



输入样例2:
	3 88
22 7 67
输出样例2:
 2 59

	#include<bits/stdc++.h>  
	using namespace std;  
	typedef long long ll;  
	int main()  
{  
	    ll n,m,temp;  
	    vector<ll> arr;  
	    while(cin>>n>>m)  
	    {  
	        for(int i=0;i<n;i++)  
	        {  
	            cin>>temp;  
            arr.push_back(temp);  
        }  
	        sort(arr.begin(),arr.end());  
        ll num_goods=0,left_money=m;  
	        for(int i=0;i<n;i++)  
        {  
            if(left_money>=arr.at(i))  
            {  
	                num_goods++;  
	                left_money-=arr.at(i);  
	            }else break;  
	        }  
        cout<<num_goods<<" "<<left_money<<endl;  
	arr.clear();
	    }  
	
	    return 0;  
}  

猜你喜欢

转载自blog.csdn.net/lanshan1111/article/details/84867513