算法竞赛入门第三章竞赛题目选讲
#include <stdio.h>
int main() {
int q=1;;
char c;
while((c=getchar())!=EOF) {
if(c=='"') {
printf("%s",q?"``":"''");
q=!q;
} else
printf("%c",c);
}
return 0;
}
#include <stdio.h>
char s[]="`1234567890-=QWERTYUUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
int main() {
char c;
while((c=getchar())!=EOF) {
int i;
for(i=1; s[i]&&s[i]!=c; i++);
if(s[i])
putchar(s[i-1]);
else
putchar(c);
}
return 0;
}
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char r(char ch);
const char* rev="A 3 HIL JM O 2TUVWXY51SE Z 8 ";
const char* msg[]= {"not a palindrome","a regular palindrome","a mirrored string","a mirrored palindrome"};
int main() {
char s[300];
while(scanf("%s",s)==1) {
int len=strlen(s);
int p=1,m=1;
for(int i=0; i<(len+1/2); i++) {
if(s[i]!=s[len-i-1]) p=0;
if(r(s[i])!=s[len-i-1]) m=0;
}
printf("%s -- is %s.\n\n",s,msg[m*2+p]);
}
return 0;
}
char r(char ch) {
if(isalpha(ch)) return rev[ch-'A'];
return rev[ch-'0'+25];
}
#include <stdio.h>
#define maxn 1010
int main() {
int n,a[maxn],b[maxn];
int kase=0;
while(scanf("%d",&n)!=EOF&&n) {
printf("Game %d:\n",++kase);
for(int i=0; i<n; i++)
scanf("%d",&a[i]);
for(;;) {
int A=0,B=0;
for(int i=0; i<n; i++) {
scanf("%d",&b[i]);
if(a[i]==b[i]) A++;
}
if(b[0]==0) break;
for(int d=1; d<=9; d++) {
int c1=0,c2=0;
for(int i=0; i<n; i++) {
if(a[i]==d) c1++;
if(b[i]==d) c2++;
}
if(c1<c2) B+=c1;
else B+=c2;
}
printf(" (%d,%d)\n",A,B-A);
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
#define maxn 100005
int ans[maxn];
int main() {
int T,n;
memset(ans,0,sizeof(ans));
for(int m=1; m<maxn; m++) {
int x=m,y=m;
while(x>0) {
y=y+x%10;
x=x/10;
}
if(ans[y]==0||m<ans[y]) ans[y]=m;
}
scanf("%d",&T);
while(T--) {
scanf("%d",&n);
printf("%d\n",ans[n]);
}
return 0;
}
#include <stdio.h>
#include <string.h>
#define maxn 105
int less(char* s,int p,int q) {
int n=strlen(s);
for(int i=0; i<n; i++)
if(s[(p+i)%n]!=s[(q+i)%n])
return s[(p+i)%n]<s[(q+i)%n];
return 0;
}
int main() {
int T;
char s[maxn];
scanf("%d",&T);
while(T--) {
scanf("%s",s);
int ans=0;
int n=strlen(s);
for(int i=1; i<n; i++)
if(less(s,i,ans))
ans=i;
for(int i=0; i<n; i++)
putchar(s[(i+ans)%n]);
putchar('\n');
}
return 0;
}