BUAAOJ 446 458 473 475 2016级C++第三次上机

这篇博客介绍了BUAAOJ中四道C++编程题目:475 - 寻找最小值,446 - 环形数列逢七必过,458 - 晚会舞伴选择,以及473 - 计算日期间隔。分别提供了题意解析和解题思路,涉及模拟和数值计算方法。
摘要由CSDN通过智能技术生成

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":"");
            }
        } 
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值