今日水题&数学题

2 篇文章 0 订阅

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;   
} 











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值