toj3254石头剪子布问题,直接暴力模拟,因为数比较小
//toj3254
#include<iostream>
#include<cstring>
using namespace std;
char my[51],others[51][51];
int i,j;
int cmp(char x,char y)
{
if(x=='R')
{
if(y=='R')return 1;
if(y=='S')return 2;
if(y=='P')return 0;
}
if(x=='S')
{
if(y=='R')return 0;
if(y=='S')return 1;
if(y=='P')return 2;
}
if(x=='P')
{
if(y=='R')return 2;
if(y=='S')return 0;
if(y=='P')return 1;
}
}
int max(int a,int b,int c)
{
if(a>=b&&a>=c)return a;
else if(b>=a&&b>=c)return b;
else return c;
}
int main()
{
int n,m,tmp1,tmp2,tmp3,res,max1;
cin>>n;
for(i=0;i<n;i++)
cin>>my[i];
cin>>m;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>others[i][j];
res=0;max1=0;
for(i=0;i<n;i++)
{
tmp1=0;tmp2=0;tmp3=0;
for(j=0;j<m;j++)
{
res+=cmp(my[i],others[j][i]);
tmp1+=cmp('R',others[j][i]);
tmp2+=cmp('S',others[j][i]);
tmp3+=cmp('P',others[j][i]);
}
max1+=max(tmp1,tmp2,tmp3);
}
cout<<res<<endl;
cout<<max1<<endl;
return 0;
}
toj1948进制转换题 就是由2到16进制之间随意转换,我最不喜欢写这种题···所以墨迹了好久才写出来
不过总算是写出了···要注意格式和细节
//toj1948进制转换
#include<iostream>
#include<cstring>
using namespace std;
char s[30],num[7],str[7];
int i,sum,tmp;
int into2(int a,int b)
{
sum=0;
tmp=1;
for(int i=6;i>=0;i--)
{
if(num[i]>='A'&&num[i]<='F')
{
sum=sum+tmp*(num[i]-'A'+10);
tmp=tmp*a;
}
else if(num[i]>='0'&&num[i]<='9')
{ sum=sum+tmp*(num[i]-'0');
tmp=tmp*a;
}
}
return sum;
}
int out2(int c,int d)
{
int i,len=0;
for(i=0;i<7;i++)str[i]=' ';str[i]='\0';
i=6;
while(c!=0)
{
if(c%d>=10)
str[i]='A'+(c%d-10);
else str[i]=c%d+'0';
i--;
len++;
c=c/d;
if(len>7)return -1;
}
return 0;
}
int main()
{
int x,y,res;
for(i=0;i<7;i++)num[i]=' ';num[i]='\0';
while(cin>>num>>x>>y)
{
res=into2(x,10);
if(out2(res,y)==-1)cout<<" ERROR"<<endl;
else
cout<<str<<endl;
for(i=0;i<7;i++)num[i]=' ';num[i]='\0';
}
return 0;
}
toj3251 给出2009年的几月几日,算星期几
//toj3251
#include<iostream>
using namespace std;
int main()
{
int day,i,month,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
cin>>day>>month;
int sum=day;
for(i=0;i<month-1;i++)
{
sum+=a[i];
}
switch(sum%7)
{
case(1):cout<<"Thursday"<<endl;break;
case(2):cout<<"Friday"<<endl;break;
case(3):cout<<"Saturday"<<endl;break;
case(4):cout<<"Sunday"<<endl;break;
case(5):cout<<"Monday"<<endl;break;
case(6):cout<<"Tuesday"<<endl;break;
case(0):cout<<"Wednesday"<<endl;break;
default:break;
}
system("pause");
return 0;
}
toj3484```某水题
//toj3483
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int ca,n,i,a[100001];
cin>>ca;
while(ca--)
{
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
int max=0;
for(i=0;i<n-1;i++)
max+=a[i];
cout<<max<<endl;
}
return 0;
}
toj1138数学题,就是在不超范围的情况下写c(m,n)
//toj1138
#include<iostream>
using namespace std;
int main()
{
int n,k,i;
while(cin>>n>>k)
{
long long sum=1;
if(n==0&&k==0)break;
if(k>n/2)k=n-k;
for(i=0;i<k;i++)
{
sum=sum*(n-i)/(i+1);//这句话换成sum*=就错了
}
cout<<sum<<endl;
}
return 0;
}
toj2706 诡异的一道题,貌似有个什么定理,poj上有讨论,其实就是看二次方程的b^2-4ac
//toj2706
#include<iostream>
using namespace std;
int main()
{
int n,a[25],i;
cin>>n;
for(i=0;i<=n;i++)cin>>a[i];
if(n>2)cout<<"NO"<<endl;
else if(n<2)cout<<"YES"<<endl;
else
{
if((a[1]*a[1]-4*a[0]*a[2])>=0)//b^2-4ac
cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}
toj3503```太水了,结果竟然错了,由于一点小疏忽
//toj3503
#include<iostream>
using namespace std;
int main()
{
int ca,n,i,a[10005],num;
cin>>ca;
while(ca--)
{
for(i=0;i<10005;i++)
a[i]=0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>num;
a[num]++;
}
int max=0;
for(i=0;i<10005;i++)//我去,这错了
if(a[i]>max)max=a[i];
cout<<max<<endl;
}
return 0;
}
toj2714 水题
//toj2741
#include<iostream>
using namespace std;
int main()
{
int A,B,a,b,P;
cin>>A>>a>>B>>b>>P;
if(A+B<=P)cout<<"Yes"<<endl;
else if(A>B)
{
if(a>=B&&P>=A)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
else if(A<=B)
{
if(b>=A&&P>=B)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
else cout<<"No"<<endl;
return 0;
}
/*
#include <iostream>
using namespace std;
int main()
{
int A,a,B,b,p;
int flag=0;
cin>>A>>a>>B>>b>>p;
if((A<=b&&B<=p)
||(B<=a&&A<=p)
||(A+B<=p))
cout<<"Yes";
else cout<<"No";
cout<<endl;
}
*/
toj3771 水题,用结构体比较简单貌似··
//toj3771
#include<iostream>
#include<cstring>
using namespace std;
struct friends
{
char name[10];
int value;
};
friends fri[4];
char tmp[10];
int main()
{
int cases,i;
cin>>cases;
while(cases--)
{
int min=65535;
for(i=0;i<4;i++)
{
cin>>fri[i].name>>fri[i].value;
if(min>fri[i].value)
{
min=fri[i].value;
strcpy(tmp,fri[i].name);
}
}
cout<<"Poor "<<tmp<<endl;
}
return 0;
}