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;
}