西邮杯

问题 C: CONTEST4.翻硬币(BY YAN)

#include<stdio.h>
#include<string.h>
int main(void) {
   char a[100] = {0};
   char b[100] = {0};
   scanf("%s",a);
   getchar();
   scanf("%s",b);
   int i,j,k,m,n;
   int chance = 0;
   for ( i = 0; i < strlen(a); i++ ){
    if ( a[i] == '*' && a[i+1] == '*' ){
        a[i] = 'o';
        a[i+1] = 'o';
    }
    else if ( a[i] == '*' && a[i+1] == 'o' ){
        a[i] = 'o';
        a[i+1] = '*';
    }
    else if ( a[i] == 'o' && a[i+1] == '*' ){
        a[i] = '*';
        a[i+1] = 'o';
    }
    else if ( a[i] == 'o' && a[i+1] == 'o' ){
        a[i] = '*';
        a[i+1] = '*';
    }
    chance++;
    if ( strcmp(a,b) == 0 ){
        printf("%d",chance);
        break;
    }
   }
    return 0;
}

问题 I: CONTEST7.可逆素数(BY YAN)

#include<stdio.h>
int main(void) {
    int i,j,k,m,n,p,q,ch;
    scanf("%d",&m);
    while ( m-- ){
            int flag = 0;
        scanf("%d",&n);
        for ( i = 2; i < n; i++ ){
            if ( n % i == 0 ){
                flag = 1;
                break;
            }
        }
        if ( flag == 0 ){
            //是素数 可以逆转
            p = n;
            q = 10;
            while ( p != 0 ){
            k += p % 10 * q;
            p /= 10;
            q /= 10;
            }
            //已经转化为逆反后
            ch = 0;
            for ( i = 2; i < k; i++ ){
                if ( k % i == 0 ){
                    ch = 1;
                    break;
                }
            }
            if ( ch == 0 ){
                //是素数
                printf("%d是可逆素数\n",n);
            }else{
                printf("%d是素数,但不是可逆素数\n",n);
            }

        }else{
            printf("%d不是素数\n",n);
        }
    }

    return 0;
}

问题 A: CONTEST1.加法变乘法(by YAN)

#include<stdio.h>
#include<string.h>
int main(void) {
    int i,j,k,x,y,m,n,t;
    scanf("%d",&t);
    while ( t-- ){
            int p = 0;
            int q = 0;
            int flag = 0;
            n = 0;
            m = 1;
        scanf("%d",&x);
        scanf("%d",&y);
        while ( n != x ){
            n += m;
            m++;
        }
        int a[100] = {0};
        int b[100] = {0};
        k = y - x;
        if ( k < 0 ){
            k = k * (-1);
        }
        for ( i = 1; i < m; i++ ){
            for ( j = 1; j < m; j++ ){
                if ( ( k == i * (i+1) + j * (j+1) - i - i - 1 - j - j - 1) && ( j - i >= 2 || i - j >= 2 ) ){
                    printf("(%d,%d)",i,j);
                    flag = 1;
                }
            }
        }
        if ( flag == 0 ){
            printf("NONE\n");
        }else{
            printf("\n");
        }
    }
    return 0;
}

问题 B: CONTEST2.核桃的数量(BY YAN)

#include<stdio.h>
#include<string.h>
int main(void) {
   int i,j,k;
   int a,b,c;
   scanf("%d%d%d",&a,&b,&c);
   for ( i = 2; i < 1000; i++ ){
    if ( i % a == 0 && i % b == 0 && i % c == 0 ){
        printf("%d\n",i);
        break;
    }
   }
    return 0;
}

问题 E: CONTEST8.星系炸弹(by YAN)

#include<stdio.h>
int main(void) {
    int n;
    int year;
    int month;
    int day;
    int days;

    scanf("%d",&n);
    while( n-- ) {
        scanf("%d%d%d%d",&year,&month,&day,&days);
        //设置额二维数组储存每周
     char week[7][28] = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
     //设置每月天数 特殊月 有特殊天数
    int monthDays[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    int i;
    int s = 0;
    int flag_1 = 0;
    int flag_2 = 0;

    //从输入的天数后看还剩几天
    for( i = 0;i < days;i++ ) {
        day++;
        if( day > monthDays[month-1] )//如果day大于本月天数 则应该进月份
        {
            day=1;
            month++;
            if( month > 12 )//月份大于12 进年份
            {
                month = 1;
                year++;
                //判断是闰年还是平年
                if(( year%400 == 0) ||( year %4 == 0 && year % 100 != 0))
                    //闰年和平年的差距是2月份相差一天
                    monthDays[1] = 29;
                else
                    monthDays[1] = 28;
            }
        }
    }
    //如果月份是两位数 则输出时不用在前面补0
    if(month > 9)
        flag_1 = 1;
    //如果天数是两位数,则输出时不用在天数前面补0
    if(day > 9)
        flag_2 = 1;
    if(flag_1 == 1 && flag_2 == 1) {
        printf("%d%d%d ",year,month,day);
    }
    else if(flag_1 == 0 && flag_2 == 1) {
        //月份补0
        printf("%d0%d%d ",year,month,day);
    }
    else if(flag_1 == 1 && flag_2 == 0) {
        //天数补零
        printf("%d%d0%d ",year,month,day);
    }
    else if(flag_1 == 0 && flag_2 == 0) {
        //月份 天数 都补零
        printf("%d0%d0%d ",year,month,day);
    }

    //现在的year 是加了 days之后的year
    //如果现在的年份是大于等于1990年时
        for( i = 1990; i < year; i++ ) {
                //判断如果是闰年 s += 366 最后用s  days作比较 相等 则结束
            if(( i % 400 == 0) || ( i % 4 == 0 && i % 100 != 0))
                s += 366;
            else
                s += 365;//是平年
        }
        //如果是闰年 二月份 29 
        if(( year % 400 == 0 ) ||( year % 4 == 0 && year % 100 != 0 ))
            monthDays[1] = 29;
        else
            //平年的话就是2 28
            monthDays[1] = 28;
        for( i = 0; i < month - 1; i++ ) {
            //s加上每月的天数 到输入的第month月之前 每月的天数
            s += monthDays[i];
        }
        //加上输入的month那一个月的天数
        s += day - 1;
        //一周中的第几天 s为到了加过之后的 year 的那一年中的总天数
        printf("%s",week[s%7]);

        printf("\n");
    }

    return 0;
}


Problem H of Contest 1456

#include<stdio.h>
#include<string.h>
int main(void) {
    int i,n,k,j,m,x;
    scanf("%d",&n);
    x = 0;
    k = 1;
    for ( i = 1; i < 100;i++ ){
            x = 0;
        for ( j = i; j < 100; j++ ){
            x += j;
            if ( x == n ){
            printf("%d %d\n",i,j);
            break;
        }
        }
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值