比赛链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82934#problem/A
总结:
1,字符串的读入,gets,fgets函数掌握
2,字符串相关函数strcmp,strcpy
3,位运算
r &= ~(1<<n)将第n位变为0
r |= 1<<n将第n位变1
A:
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
char start[10];
char ed[10];
char END[20];
char ch[2000000];
int main(void){
//freopen("in.txt","r",stdin);
while(scanf("%s",start)&&!strcmp(start,"START")){
getchar();
int a=0;
while((ch[a]=getchar())!='\n')a++;
ch[a]='\0';
scanf("%s",ed);
int cnt = 0;
for(int i = 0;i<a;i++){
if(ch[i]<='Z' && ch[i]>='A')
{
if(ch[i]-5<'A')ch[i]='Z'-(5-(ch[i]-'A'))+1;
else ch[i]=ch[i]-5;
}
}
printf("%s\n",ch);
}
}
B:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
int mp[6][6];
int vis[6][6];
int x[4]={1,-1,0,0},y[4]={0,0,-1,1};
struct node{
int x;
int y;
}q;
void dfs(int a, int b){
int flag = 0;
if(a == 1 && b == 1)flag = 1;
else {
for(int i = 0;i<4;i++){
if(a+x[i]>=1 && a+x[i]<=5 && b+y[i]<=5 && b+y[i]>=1 && vis[a+x[i]][b+y[i]]==vis[a][b]-1 && mp[a+x[i]][b+y[i]]==0)
dfs(a+x[i],b+y[i]),cout << '(' << a+x[i]-1<<','<<' '<<b+y[i]-1<<')'<<'\n';
}
}
}
queue<node> Q;
int main(void){
//freopen("in.txt","r",stdin);
for(int i = 1;i<=5;i++)
for(int j = 1;j <=5;j++)scanf("%d",&mp[i][j]);
q.x = 1, q.y = 1;
Q.push(q);
while(!Q.empty()){
q=Q.front();
int a = q.x, b = q.y;
Q.pop();
for(int i = 0;i<4;i++){
if(a+x[i]>=1 && a+x[i]<=5 && b+y[i]<=5 && b+y[i]>=1 &&!vis[a+x[i]][b+y[i]] && mp[a+x[i]][b+y[i]]==0){
vis[a+x[i]][b+y[i]] = vis[a][b]+1;
q.x = a+x[i],q.y = b+y[i];
Q.push(q);
}
}
}
cout << "(0, 0)\n";
dfs(5,5);
cout << "(4, 4)\n";
}
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <iostream>
using namespace std;
char ch[66][20];
int vis[66];
int n;
int ju(){
for(int i =0;i<n;i++)if(!vis[i])return 0;
return 1;
}
int main(void){
//freopen("in.txt","r",stdin);
cin>>n;
for(int i = 0;i<n;i++)scanf("%s",ch[i]);
int w,s;scanf("%d,%d",&w,&s);
memset(vis,0,sizeof vis);
int be = w-1;
int cnt;
while(!ju()){
cnt = 0;
be%=n;
while(cnt<s){
while(vis[be])be++,be%=n;
cnt++;
be++;
be%=n;
}
if(be>=1)vis[be-1]=1,printf("%s\n",ch[be-1]);
else vis[n-1]=1,printf("%s\n",ch[n-1]);;
}
}
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
char ch[2000];
int main(void){
//freopen("in.txt","r",stdin);
while((ch[0]=getchar()) != EOF){
int a = 1;
for(int i =1;i<2000;i++)ch[i]='0';
while((ch[a]= getchar())!='\n')a++;
ch[a]='\0';
for(int i = 0; i<a;i++){
if(i+2 < a && ch[i]=='y' && ch[i+1]=='o' && ch[i+2]=='u')ch[i]='w',ch[i+1]='e',ch[i+2]=' ',i+=2;
}
for(int i = 0;i<a;i++){
if(i+1<a && ch[i]==' ' && ch[i+1]==' ')putchar(' '),i++;
else putchar(ch[i]);
}
putchar('\n');
}
}
#include <algorithm>
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main(void){
char a[7];
while(scanf("%s",a)!=EOF){
int x = a[2]-'0';
int y = a[6]-'0';
int m = x*y;
int n;
if(a[3]=='-')n = y*(a[0]-'0')-x*(a[4]-'0');
else n = y*(a[0]-'0')+x*(a[4]-'0');
int cnt = 1;
for(int i = 1;i<=fabs(n*m);i++)if((n%i==0||(n*-1)%i==0) && (m%i==0 || (m*-1)%i==0))cnt = i;
n/=cnt;
m/=cnt;
if(n!=0 && n%m!=0)cout << n << '/' << m;
else cout << n/m;
putchar('\n');
}
}
#include <iostream>
#include <cstdio>
using namespace std;
int r,x,y;
void set(int n){
r &= ~(1<<n);
}
void bit(int n){
r |= 1<<n;
}
int main(void){
//freopen("in.txt","r",stdin);
scanf("%x,%d,%d",&r,&x,&y);
bit(y);
bit(y-1);
set(y-2);
set(x);
printf("%x",r);
}
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
int ch[110][2000];
int main(void){
//freopen("in.txt","r",stdin);
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)!=EOF){
memset(ch,0,sizeof ch);
int t = 1;
while(a)ch[1][t]=a%10,a/=10,t++;
t = 1;
while(b)ch[2][t]=b%10,b/=10,t++;
t = 1;
while(c)ch[3][t]=c%10,c/=10,t++;
for(int i = 4;i<=100;i++){
for(int j =1;j<=1999;j++){
int s =0;
s+= ch[i-3][j]+ch[i-2][j]+ch[i-1][j]+ch[i][j];
ch[i][j]=s%10;
ch[i][j+1]=s/10;
}
}
int cnt = 1;
for(int i = 1999;i>=1;i--){
if(ch[100][i]!=0){cnt = i;break;}
}
for(int i = cnt;i>=1;i--)
cout << ch[100][i];
putchar('\n');
}
}