问题 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("%d年0%d月%d日 ",year,month,day);
}
else if(flag_1 == 1 && flag_2 == 0) {
//天数补零
printf("%d年%d月0%d日 ",year,month,day);
}
else if(flag_1 == 0 && flag_2 == 0) {
//月份 天数 都补零
printf("%d年0%d月0%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;
}