計算乙個數是否能通過某個進製轉換為另乙個數的問題。
思路就是把輸入的資料轉化為全數字,再計算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 ...