2020/12/20
A - Insomnia cure
题意:总共有d条龙,每隔k,l,m,n就会有一条龙受到伤害,求一共有都少龙受到伤害
题解:从1到d循环判断,如果(i%k==0||i%l==0||i%m==0||i%n==0) cnt++
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<string> #include<cmath> using namespace std; int main(){ int k,l,m,n,d; int cnt=0; cin>>k>>l>>m>>n>>d; for(int i=1;i<=d;i++){ if(i%k==0||i%l==0||i%m==0||i%n==0){ cnt++; } } cout<<cnt<<endl; return 0; }
B - Escape
题意:公主从龙的洞穴中逃跑,公主的速度为vp,龙的速度为vd。公主逃跑时间 t 后,龙开始追公主。龙一旦追上公主,公主就丢弃一块宝石,龙拿起物拿起物品,回到洞穴,花f小时来清理。然后再去追公主,当公主离洞穴距离大于等于c的时候就安全了,求公主在逃跑过程中需要丢弃的宝石数

题解:当vp>=vd时,龙追不上公主;当vp<vd时,设经过t1时间追上公主,则初始状态t1=(vp*t*1.0)/(vd-vp);公主和龙的距离为ans=vd*t1,扔下宝石,龙返回洞穴花费时间t1,整理花费时间f; 再次从洞穴追上公主花费时间t2,t2=(ans+vp*f+vp*t1)/(vd-vp),ans=vd*t2;以此类推直到c>=ans
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<string> #include<cmath> using namespace std; int main(){ int vp,vd,t,f,c,l; cin>>vp>>vd>>t>>f>>c; double t1,t2,ans=0,cnt=0; if(vp>=vd){ cout<<0<<endl; return 0; } t1=(vp*t*1.0)/(vd-vp); ans=vd*t1; t2=(ans+vp*f+vp*t1)*1.0/(vd-vp); while(ans<c){ cnt++; /* t2=(ans+vp*f+vp*t1)*1.0/(vd-vp); ans+=vp*f+vp*t1; t1=ans*1.0/(vd-vp); ans=vd*t2; */ ans+=vp*f+vp*t1; t2=ans*1.0/(vd-vp); t1=ans*1.0/(vd-vp); ans=vd*t2; } cout<<cnt<<endl; }
C - Terse princess
题意:有个公主找王子,如果这个王子比之前所有王子的财富都多,公主就会Oh,如果这个王子比之前所有王子的财富的总和加起来还多,就会Wow,(Wow和Oh不会同时发生),构造一个长度为n的序列,要求有a个Oh,b个Wow,如果不存在输出-1;
题解:当b=0时,如果a+1=n,输出-1.因为一定存在第二个数大于第一个数的情况,满足输出WOW的情况
若b!=0,先把满足Wow的b个数构造出来,先输出1,构造等比数列2,4,8….(这样可以满足这个数比他之前所有数的和都大);在构造满足Oh的a个数,使每个数比他前面那个数多1;剩下n-a-b个数与他前面的数相等
如果b=0,先输出1;为了保证有a个 Oh,没有Wow, 再输出一个数字1;再构造满足Oh的a个数,同上
#include<algorithm> #include<iostream> #include<cstring> #include<string> #include<cmath> #include<cstdio> using namespace std; int c[110]; int main(){ int n,a,b; cin>>n>>a>>b; if(b==0&&a&&a+1==n){ cout<<-1<<endl; return 0; } cout<<1<<" "; for(int i=1;i<=n-1;i++){ if(b==0&&i==1){//b=0,如果是1 2的话会出现WOW,1 1 2 3 ... 就不会 c[1]=1; cout<<1<<" "; a++; continue; } if(i<=b){ c[i]=pow(2,i); }else if(i<=a+b){ c[i]=c[i-1]+1; }else{ c[i]=c[i-1]; } cout<<c[i]<<" "; } cout<<endl; }

浙公网安备 33010602011771号