杭电2031-2040

2031

这是道好题,值得写题解解释一下

#include<stdio.h>
int main()
{
    char w[6]= {'A','B','C','D','E','F'};
    char a[1000];
    int n,r,i,z;
    while(~scanf("%d %d",&n,&r))
    {
        i=0,z=0;
        if(n<0)
        {
            n=-n;
            z=1;
        }
        while(n)
        {
            a[i++]=n%r;
            n/=r;
        }
        if(z==1)
                printf("-");
        for(int j=i-1; j>=0; j--)
        {
            if(a[j]>9)
                printf("%c",w[a[j]-10]);
            else
                printf("%d",a[j]);
        }
        putchar('\n');
    }
    return 0;
}

2032

#include<bits/stdc++.h>
#include<iostream>
//爽了,不卡空格
//杨辉三角
using namespace std;
int q[35][35];
int main() {
    for(int i=1;i<=30;i++){
        for(int j=1;j<=i;j++){
            if(j==1||j==i){
                q[i][j]=1;
            }
            else{
                q[i][j]=q[i-1][j-1]+q[i-1][j];
            }
        }
    }
    int n;
    while(cin>>n){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=i;j++){
                cout << q[i][j] << " ";
            }
            cout << endl;
        }
        cout  << endl;
    }
    return 0;
}

2033

#include<bits/stdc++.h>
#include<iostream>

using namespace std;

int main() {
    int n;
    int AH,AM,AS,BH,BM,BS;
    cin >> n;
    while(n--){
        cin >> AH >> AM >> AS >> BH >> BM >> BS;
        int A = AH*3600 + AM*60 + AS;
        int B = BH*3600 + BM*60 + BS;
        int C = A+B;
        int H = C/3600;
        int M = (C%3600)/60;
        int S = (C%3600)%60;
        cout << H <<" "<< M <<" "<< S << endl;
    }



    return 0;
}

2034

这个好像也没写出来

#include<stdio.h>
#include<string.h>
int main() {
    char a[100],c;
    int n;
    scanf("%d",&n);
    getchar();
    for(int i=0; i<n; i++) {
        int k=0;
        gets(a);
        if(a[0]<'A'||a[0]>'Z'&&a[0]<'_'||a[0]>'_'&&a[0]<'a'||a[0]>'z')
            printf("no\n");
        else {
            for(int j=0; j<strlen(a); j++) {
                if(a[j]>='0'&&a[j]<='9'||a[j]>='A'&&a[j]<='Z'||a[j]=='_'||a[j]>='a'&&a[j]<='z')
                    k++;
                else
                    break;
            }
            if(k==strlen(a))
                printf("yes\n");
            else
                printf("no\n");
        }
    }
    return 0;
}

2035

#include<bits/stdc++.h>
#include<iostream>

using namespace std;

int main() {
    int m,n;
    //m是A,n是B
    
    while(cin>>m>>n,m,n) {
        int x=1;
        for(int i=0;i<n;i++){
            x=x*m;
            x=x%1000;
            
        }
        cout << x << endl;
    }
    return 0;
}

2036

#include<bits/stdc++.h>
#include<iostream>

using namespace std;
double x[105],y[105];
//需要知道多边形图形的计算公式
int main() {
    int n;
    double s;
    while(cin>>n,n){
        s=0;
        for(int i=0;i<n;i++){
            cin>>x[i]>>y[i];
        }
        x[n]=x[0];
        y[n]=y[0];
        for(int i=0;i<n;i++){

            s+=x[i]*y[i+1]-x[i+1]*y[i];
        }
        //浮点数版本的绝对值
        s=fabs(s*0.5);
        printf("%.1lf\n",s);
    }

    return 0;
}

2037

#include<bits/stdc++.h>
#include<iostream>

using namespace std;
struct node{
    int s,e;
}T[105];
bool cmp(node a,node b){
    return a.e<b.e;
}
int main() {
    int n;
    while(cin>>n,n){
        for(int i=0;i<n;i++){
            cin>>T[i].s>>T[i].e;
        }
        sort(T,T+n,cmp);
        //最早结束的节目必须要看
        int ans=1;
        int m=0;
        for(int i=1;i<n;i++){
            if(T[i].s>=T[m].e){
                ans++;
                m=i;
            }
        }
        cout << ans << endl;
        
    }
    return 0;
}

2038

没有2038这道题目

2039

#include<bits/stdc++.h>
#include<iostream>

using namespace std;
//得用浮点型
int main() {
    int n;
    double a,b,c;
    cin>>n;
    while(n--){
        cin>>a>>b>>c;
        if(a+b>c&&a+c>b&&b+c>a){
            cout<<"YES"<<endl;
        }else{
            cout<<"NO"<<endl;
        }
    }   
    return 0;
}

2040

#include<bits/stdc++.h>
#include<iostream>

using namespace std;
bool isAmicablenumbers(int a,int b){
    int sum1=0,sum2=0;
    for(int i=1;i<a;i++){
        if(a%i==0){
            sum1+=i;
        }
    }
    for(int i=1;i<b;i++){
        if(b%i==0){
            sum2+=i;
        }
    }
    if(sum1==b && sum2==a){
        return true;
    }
    else{
        return false;
    }
}
int main() {
    int n;
    cin>>n;

    int a,b;
    while(n--){
       cin>>a>>b;
       if(isAmicablenumbers(a,b)){
           cout<<"YES"<<endl;
       }
       else{
           cout<<"NO"<<endl;
       }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值