A题:Bit++
水题,就是求n个++或者--的操作后的结果,直接上代码:
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <string>
using namespace std;
int main()
{
int i,j,n;
string s;
char a;
int b=0;
cin >> n ;
for(i=0; i<n; i++)
{
cin >> s;
int l=s.length();
for(j=0; j<l; j++)
{
if(s[j]=='+')
{
b++;
break;
}
if(s[j]=='-')
{
b--;
break;
}
}
}
cout << b << endl;
return 0;
}
B题:Painting Eggs
这道题一开始没读懂,后来读着读着在结合样例,就知道了~~
题意:两个人干活,A和G。A对第i个鸡蛋要ai,G要gi。只要A的总价格加上第i次的价格G总价格<=500.那么就打印A。
code:
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
using namespace std ;
char a[1000005];
int main()
{
int i,n;
int x,y,sum1=0,sum2=0;
cin >> n;
for(i=0;i<n;i++)
{
cin >> x >> y;
if(sum1+x-sum2<=500)
{
sum1+=x;
a[i]='A';
}
else
{
sum2+=y;
a[i]='G';
}
}
for(i=0;i<n;i++)
cout << a[i];
cout << endl ;
return 0;
}
C题:XOR and OR
这道题怎么说呢~~~一开始没明白怎么换。后来仔细读题是将取出来的两个相邻的数取异或和或运算。再将两个数代替。那这样就好办了。当两个串长度不相等时,肯定输出NO。当两串相等时,输出YES。当两串长度相等但不相同时,只要两串中都含有1即可~~~
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std ;
int main()
{
string a,b;
cin >> a >> b;
int l1=a.length();
int l2=b.length();
int i,num1=0,num2=0;
if(a==b)
cout << "YES" << endl;
else if(a=="1")
cout << "NO" << endl;
else
{
if(l1!=l2)
cout << "NO" << endl;
else
{
for(i=0;i<l1;i++)
{
if(a[i]=='1')
{
num1++;
}
}
for(i=0;i<l2;i++)
{
if(b[i]=='1')
num2++;
}
if(num1&&num2)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
}
return 0;
}
D题:Yet Another Number Game
这题是一道博弈题:当n==1时,是巴什博奕。当n=2时,是威佐夫博奕。当n=3时,是nim博弈。
下面分情况讨论一下。
(1)n=1时,巴什博奕。那么当a[0]=0时,先手是必败的。a[0]>0时,先手必胜。
(2)n=2时,威佐夫博奕。由于这道题数据是0—300.数据量很小。直接将奇异局势打表打出来。在将a[0],a[1]与
奇异局势相比较,若(a[0],a[1])是奇异局势,那么先手必败。否则,先手必胜。
(3)n=3时,nim博弈。判断a[0]^a[1]^a[2]的值,若为0,则先手必败。否则先手必胜。
代码如下:
#include <iostream>
#include <stdio.h>
using namespace std;
int a[10];
int x[305]= {0},y[305]= {0},vis[666]= {0};
int main()
{
int n,i,k=0,p=0,q=0,flag=0;
cin >> n;
for(i=0; i<n; i++)
{
cin >> a[i];
}
for(i=0; i<=300; i++)
{
if(vis[i]==0)
{
x[p]=i;
y[q]=x[p]+k;
k++;
vis[x[p]]=1,vis[y[q]]=1;
p++,q++;
}
}
if(n==1)
{
if(a[0]==0)
cout << "BitAryo" << endl;
else
cout << "BitLGM" << endl;
}
else if(n==2)
{
if(a[0]>a[1])
swap(a[0],a[1]);
for(i=0;i<=p;i++)
{
if(a[0]==x[i]&&a[1]==y[i])
{
flag=1;
break;
}
}
if(flag==1)
cout << "BitAryo" << endl;
else
cout << "BitLGM" << endl;
}
else
{
if((a[0]^a[1]^a[2])==0)
cout << "BitAryo" << endl;
else
cout << "BitLGM" << endl;
}
return 0;
}