A
#include<stdio.h>
#include<string.h>//memset
int tree[10005];
int main(){
int l,m;
while(scanf("%d%d",&l,&m) != EOF){
for(int i = 0;i <= l;i++)tree[i] = 1;
while(m--){
int left,right;
scanf("%d%d",&left,&right);
for(int i = left;i <= right;i++){
tree[i] = 0;
}
}
int cnt = 0;
for(int i = 0;i <= l;i++){
if(tree[i] == 1)cnt++;
}
printf("%d\n",cnt);
}
return 0;
}
B
#include<stdio.h>
#include<string.h>//memset
char str[1000];
void lower(char str[]){
for(int i = 0;i < strlen(str);i++){
if(str[i] >= 'A' && str[i] <= 'Z'){
str[i] += 32;
}
}
}
int main(){
int cnt = 0;
while(scanf("%s",str) != EOF){
cnt++;
char t[1000];
strcpy(t,str);
if(cnt != 1)printf(" ");
lower(t);
if(strcmp(t,"garbage") == 0)printf("****");
else if(strcmp(t,"trash") == 0)printf("****");
else if(strcmp(t,"piracy") == 0)printf("****");
else if(strcmp(t,"fake") == 0)printf("****");
else printf("%s",str);
}
return 0;
}
C
#include<stdio.h>
#include<string.h>//memset
int a[1000];
int base(int n,int x){
int i = 0;
while(n != 0){
a[i++] = n % x;
n = n/x;
}
return i - 1;
}
int main(){
int n,x;
while(scanf("%d%d",&n,&x) != EOF){
if(n == 0)printf("0\n");
else{
int cnt = base(n,x);
for(int i = cnt;i >= 0;i--){
if(a[i] >= 0 && a[i] < 10)printf("%d",a[i]);
switch (a[i]){
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
}
}
printf("\n");
}
}
return 0;
}
D
#include<stdio.h>
#include<string.h>//memset
int mon[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
char * week[7] = {"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
int run(int y){
if(y % 4 == 0 && y % 100 != EOF || y % 400 == 0)return 1;
else return 0;
}
int main(){
int n;
while(scanf("%d",&n) != EOF){
if(n == -1)break;
int w = n % 7;
n++;
int y = 2000;
for(y = 2000;y <= 9999;y++){
if(run(y)){
if(n > 366)n -= 366;
else break;
}else{
if(n > 365)n -= 365;
else break;
}
}
if(run(y))mon[2] = 29;
else mon[2] = 28;
int m = 1;
for(m = 1; m <= 12;m++){
if(n > mon[m])n -= mon[m];
else break;
}
int d = n;
printf("%d-%02d-%02d %s\n",y,m,d,week[w]);
}
return 0;
}
E
#include<stdio.h>
#include<math.h>
#include<string.h>//memset
int su(int n){
for(int i = 2;i <= sqrt(n);i++){
if(n % i == 0)return 0;
}
return 1;
}
int main(){
int n;
while(scanf("%d",&n) != EOF){
if(n == 0)break;
if(n % 2 == 1)printf("Goldbach's conjecture is wrong.\n");
else{
int i = 2;
for(i = 2;i < n;i++){
if(su(i) && su(n - i))break;
}
if(i >= n)printf("Goldbach's conjecture is wrong.\n");
else printf("%d = %d + %d\n",n,i,n-i);
}
}
return 0;
}
F
#include<stdio.h>
#include<math.h>
#include<string.h>
int check(int ans,int guess,int b,int c){
int a[4],g[4];
int ac[10] = {0},gc[10] = {0};
a[0] = ans % 10;
a[1] = (ans/10)%10;
a[2] = (ans/100)%10;
a[3] = ans / 1000;
ac[a[0]]++;
ac[a[1]]++;
ac[a[2]]++;
ac[a[3]]++;
g[0] = guess % 10;
g[1] = (guess/10)%10;
g[2] = (guess/100)%10;
g[3] = guess / 1000;
gc[g[0]]++;
gc[g[1]]++;
gc[g[2]]++;
gc[g[3]]++;
//判断正确的数
int cnt = 0;
for(int i = 0;i < 10;i++){
cnt += ac[i] < gc[i]?ac[i]:gc[i];
}
if(cnt != b)return 0;
//判断位置正确的数
cnt = 0;
for(int i = 0;i < 4;i++){
if(a[i] == g[i])cnt++;
}
if(cnt != c)return 0;
return 1;
}
int main(){
int n;
while(scanf("%d",&n) != EOF){
if(n == 0)break;
int guess[101][3];
for(int i = 0;i < n;i++){
scanf("%d%d%d",&guess[i][0],&guess[i][1],&guess[i][2]);
}
int res[10000] = {0};
int cnt = 0;
int answer = 0;
for(int i = 0;i <= 9999;i++){
int flag = 1;
for(int j = 0;j < n;j++){
if(!check(i,guess[j][0],guess[j][1],guess[j][2])){
flag = 0;
break;
}
}
if(flag){
res[i] = 1;
cnt++;
answer = i;
}
if(cnt > 1)break;
}
if(cnt == 1)printf("%04d\n",answer);
else printf("Not sure\n");
}
return 0;
}
G
#include<stdio.h>
#include<math.h>
#include<string.h>//memset
int a[20],b[20],c[15];
char str[20];
int main(){
int n;
while(scanf("%d",&n) != EOF){
if(n == 0)break;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
while(n--){
//输入新的数
scanf("%s",str);
int k = 0;
for(int i = strlen(str) - 1;i >= 0;i--){
if(str[i] == '$'||str[i] == ','||str[i] == '.')continue;
a[k++] = str[i] - '0';
}
//加法
int jin = 0;
for(int i = 0;i < 20;i++){
int t = a[i] + b[i] + jin;
b[i] = t % 10;
jin = t / 10;
}
}
//逆序输出
int start = 19;
while(b[start] == 0 && start != 0)start--;
printf("$");
int y = (start - 1) % 3;
if(y == 0)y = 3;
for(int i = start;i >= 2;i--){
printf("%d",b[i]);
y--;
if(y == 0 && i != 2){
printf(",");
y = 3;
}
}
printf(".%d%d\n",b[1],b[0]);
}
return 0;
}