PAT-basic/advanced

1017 -本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。

超位数,要用字符串来做。

1029 有两个测试点通不过,待查

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 


using namespace std;


class Solution{
public:

};

int main()
{
    string s1,s2;
    vector res;
    getline(cin,s1);
    getline(cin,s2);
    for(int i=0;i= 'a'&&s1[i] <= 'z')
            s1[i] -= 32;
    }
    for(int i=0;i= 'a'&&s2[i] <= 'z')
            s2[i] -= 32;
    }

    unordered_map origin,actual;
    for(int i=0;ifirst << ":" << it->second<first]==0 && it->second>0)
            res.push_back(it->first);
    }
    for(int i=res.size()-1;i>=0;i--)
        cout<

1062. 最简分数(20)
坑1:不一定是真分数
坑2:一开始用的float N1/N2作为边界,两个点未通过,后来改成double,变成了一个点未通过

#include 

int gcd(int a, int b)
{
    for(int r; (r = a % b); a = b, b = r) ;
    return b;
}

int main()
{
    int N1, N2, M1, M2, K, L, count = 0;
    scanf("%d/%d %d/%d %d", &N1, &M1, &N2, &M2, &K);
    
    if(N1 * M2 > N2 * M1)
    {
        L = N1, N1 = N2, N2 = L;
        L = M1, M1 = M2, M2 = L;
    }
    
    for(L = N1 * K / M1 + 1; N2 * K > M2 * L; L++)  if(gcd(L, K) == 1)
        printf("%s%d/%d", count++ ? " " : "", L, K);
            
    return 0;
}

1071题目很简单,一个坑是输出有两个空格,题目给的格式是错的,得按照给的输出样例的格式来。
但是就是有两个测试点通不过。原因是要把game over放在最后。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

void judge(unordered_map bad, char c, int flag){

}

int main(void){
   int t,k;
   cin>>t>>k;
   for(int i=0;i>n1>>b>>h>>n2;
        if(t<=0){
            cout<<"Game Over";
            break;
        }
        else if(t-h<0){
            cout<<"Not enough tokens.  Total = "<n1) || (b==0 && n2

advanced

1023. Have Fun with Numbers (20)
超过19位的就要用数组,然而有一个测试点通不过,没找到原因

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

void judge(unordered_map bad, char c, int flag){

}
int compare(string a,string b)
{
    for(int i=0; i<8; i++)
    {
        if(a[i]-b[i]>0)
            return 1;
        if(a[i]-b[i]<0)
            return 0;
    }
    return 0;
}

int main(void){

   unordered_map mp1,mp2;
   int num1[40],num2[40];
   int i=0;
   char c;
   while((c=getchar()) != '\n'){
        num1[i]=c-'0';
        mp1[num1[i]]++;
        i++;
   }
   int f=0; //jinwei
   int cnt=i; //weishu
   i--;
   for(int j=i;j>=0;j--){
        int temp=num1[i]*2;
        if(temp+f<10){
           num2[j]=temp+f;
           mp2[num2[j]]++;
           f=0;
           }
        else{
            num2[j]=temp-10+f;
            mp2[num2[j]]++;
            f=1;
        }
        i--;
   }
   if(f==1)
        mp2[1]++;

   int flag=0;
   for(auto it=mp1.begin();it!=mp1.end();it++){
        if(it->second != mp2[it->first]){
            flag=1;
            break;
        }
   }
   if(flag == 0){
        cout<<"Yes"<

你可能感兴趣的:(PAT-basic/advanced)