热身赛

比赛链接: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');
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值