(自用隨筆)PAT A1010

2021-10-05 05:09:08 字數 1225 閱讀 3401

計算乙個數是否能通過某個進製轉換為另乙個數的問題。

思路就是把輸入的資料轉化為全數字,再計算number大小。在計算第二個不知道進製的數時,從最低位開始計算,一旦數字超過了number1,就讓進製加一,重新計算,知道數字大小相等。

網上比較高效的方法是二分法找進製,我用的笨方法,從2開始往上找。

坑點就是數字可能會超過int的範圍,而且可能會超過long long int的範圍。當溢位時,數字變為負,所以直接判斷是否為負即可 

#include #include #include using namespace std;

char str1[30],str2[30];

int tag;

long long radix1,radix2;

long long num1,num2;

void converse(char temp,int x);

void compute(int t);

void contrast(int t);

int main()

else

converse(temp1,1);

converse(temp2,2);

compute(tag);

contrast(tag);

return 0;

}void converse(char temp,int x)

else

index++;

}str1[index] = '\0';

}else

else

index++;

}str2[index] = '\0';

}}void compute(int t)

num1 += a;

}}else

num2 += a;}}

}void contrast(int t)

num2 += a;

if(num2 > num1 || num2<0 || temprad >num1)

}if(num2 == num1)

num2 = 0;

temprad++;

}}else

num1 += a;

if(num1 > num2 || num1 < 0 || temprad > num2)

}if(num2 == num1)

num1 = 0;

temprad++;}}

}

(自用隨筆)PAT A1024

涉及大數運算,本人用的很笨的方法,當數字長度超過10時,分兩個char陣列將數字長度大於10的部分和小於10的部分分開存起來,然後轉成long long型大整數再運算。只過了前六個樣例,改不動了。不過收穫很多 include include include include include using...

(自用隨筆)PAT A1003 Emergency

include include define maxn 100000000 int n,m,c1,c2 int wei 505 int w 505 到點v的最大點權之和 int g 505 505 int num 505 到點v的最短路徑條數 int d 505 int vis 505 void d...

(自用隨筆)PAT A1029 Median

聽說這個題原本記憶體限制1.5mb,太嚴格了。逼著你去用歸併排序。我寫的時候沒有想到,直接暴力存陣列,然後從頭乙個乙個比較,直到 n m 2的位置結束。但思想還是歸併。include include include using namespace std int n,m long long p,q ...