475 - A - 济世之光
题意:寻找最小值,如果所有数相同输出”En Taro Modric”否则输出最小值
#include <cstdio>
int main(){
int n,min,flag=1,num;
scanf("%d%d",&n,&min);
for(int i=1;i<n;i++){
scanf("%d",&num);
if(num!=min)flag=0;
if(num<min)min=num;
}
if(flag)puts("En Taro Modric");
else printf("%d\n",min);
}
446 - B - 王助教玩逢七必过
环上有1~n的数,求从p开始到i与数字中含有7或数字是7的倍数的数重合的数。
因为是环,所以枚举每n个数就行了。
#include <cstdio>
bool get7(long long num){
while(num){
if(num%10==7)return true;
num/=10;
}
return false;
}
int main(){
int n,i;long long beg,j;
scanf("%d%d%lld",&n,&i,&beg);
for(j=i-1;;j+=n){
if(((beg+j)%7==0||get7(beg+j)))break;
}
printf("%lld",beg+j);
}
458 - C - xjx的晚会舞伴
已知妹子相对左右的颜值,求她们中间可能颜值最高的所有人。
思路:判断妹子是不是在相对的”凸起”上即可。
#include <iostream>
using namespace std;
int i,n,a[1050],Left,Right;
int main() {cin>>n;
for(i=1; i<n;i++)cin>>a[i];
a[0]=1;a[n]=-1;
for(int i=1;i<=n;i++){
Left=i-1;
while (a[Left]==0)Left--;
Right=i;
while(a[Right]==0)Right++;
if(a[Left]>0&&a[Right]<0)cout<<i<<" ";
}
cout<<endl;
}
473 - D - 王助教活了多久
求某天到2016-10-19的时间间隔。
规定x-10-19~x+1-10-19为一整年,规定x-y-19~x-y+1~19为一整月。
注意英语语法和合法日期(话说没有公元0年吗…被坑惨惹QwQ)。
#include <cstdio>
#define F(_i,_u) for(int _i=0;_i<(_u);_i++)
int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
int x,y,z;
while(~scanf("%d%d%d",&x,&y,&z)){
if(x>2016||y>12||x<1||y<1||z<1)puts("Invaild date.");
else if(x==2016&&(y>10||(y==10&&z>19)))puts("Invaild date.");
else{
if(z>(x%4==0&&x%100||x%400==0)*(y==2)+month[y])puts("Invaild date.");
else {
if(z>19){
z=19+month[y]+(x%4==0&&x%100||x%400==0)*(y==2)-z;
y++;
}else z=19-z;
if(y>10)y=22-y,x++;
else y=10-y;
x=2016-x;
printf("Wang assistant is %d year%s, %d month%s, %d day%s old.\n",x,x>1?"s":"",y,y>1?"s":"",z,z>1?"s":"");
}
}
}
}