powered by:ab_in 局外人
從大佬題解搬了一部分思想過來。
其實就是兩步:
一.回文判斷。
二.轉換為字串,做高精加。
1.先將兩個字串轉化為10進製的放在陣列裡。
2.兩個陣列進行n進製加法。
3.每一位帶入表中求值。
c++
#include
using
namespace std;
const
int maxn=
110;
char six[20]
="0123456789abcdef"
;bool
huiwen
(string str1)
string gaojingjia
(int k,string str1)
,num2[maxn]
=,sum[maxn]=;
int len=str1.
length()
,len_sum=
1,x=0;
string str2=str1;
reverse
(str1.
begin()
,str1.
end())
;for
(int i=
0;i)while
(len>=len_sum)
sum[len_sum]
=x;while
(sum[len_sum]==0
) len_sum--
;//將前面0全剪了
string str;
for(
int i=len_sum;i>=
1;i--
) str+
=six[sum[i]];
//比較巧妙的點!!,由於不能直接輸出結果,故可以定義乙個字串,對應乙個const的字串,數字是幾,就變為字元讓str加上。
//而且字串從左往右加
return str;
}int n;string m;
intmain()
else
m=gaojingjia
(n,m);}
printf
("impossible!");
return0;
}
中間tip2,搬來寫一下
int len1=str1.
length()
;int len2=str2.
length()
;//前面補0,弄成長度相同
if(len1else
len1=str1.
length()
;
int轉string的函式(網上搜的)
string sum
(int a)
py**
既然py自帶高精,就不用陣列n進製高精加了。
因為n進製沒辦法像十進位制那麼好相加,則我們先轉換成10進製求和,再短除法轉換成n進製。
1.先強制轉換兩數之和為10進製int(字串,這個字串是什麼進製)
2.輾轉相除兩數時n進製轉換
3.每一位帶入模版
def
f(s,k)
: mu_ban=
"0123456789abcdef"
;a=""
while s>0:
#注意這裡是大於0
yu_shu=s%k
s=s//k
a+=mu_ban[yu_shu]
return a[::
-1]n=
int(
input()
)m=input()
;ans=
0while ans<
30and
(m!=m[::
-1])
: m=f(
int(m,n)
+int
(m[::-
1],n),n)
ans+=
1if ans>=30:
print
("impossible!"
)else
:print
(f'step='
)
人生苦短,我用py。
完結。
單純的高精實現斐波那契數列。
#include
using
namespace std;
int n,a[
5001][
1200];
intmain()
bool judge=
false
;for
(int i=
3;i<=n;i++
)for
(int j=
1;j<=
1200
;j++)}
}for
(int j=
1200
;j>=
1;j--
) cout<}return0;
}
題目 洛谷1604 B進製星球(高精加法 R進製)
題目描述 話說有一天,小z乘坐宇宙飛船,飛到乙個美麗的星球。因為歷史的原因,科技在這個美麗的星球上並不很發達,星球上人們普遍採用b 2 b 36 進製計數。星球上的人們用美味的食物招待了小z,作為回報,小z希望送乙個能夠完成b進製加法的計算器給他們。現在小z希望你可以幫助他,編寫實現b進製加法的程式...
被限制的加法(高精入門)
題目 僅用不超過10個的變數,變成計算出兩個等長的n 1 輸入格式 第一行乙個數n,表示位數,後面有n行,每行兩個數字,表示a b相對位的兩個數,輸入的格式是從最高位開始到最低位。輸出格式 輸出兩數的和 輸入樣例 1 12 3 0 53 7 輸出樣例 思路 由於記憶體的限制只能考慮從高位到低位的演算...
被限制的加法(高精入門)
題目 僅用不超過10個的變數,變成計算出兩個等長的n 1輸入格式 第一行乙個數n,表示位數,後面有n行,每行兩個數字,表示a b相對位的兩個數,輸入的格式是從最高位開始到最低位。輸出格式 輸出兩數的和 輸入樣例 1 12 3 0 53 7 輸出樣例 思路 由於記憶體的限制只能考慮從高位到低位的演算法...