實現乙個加法器,使其能夠輸出a+b的值。
輸入包括兩個數a和b,其中a和b的位數不超過1000位。
可能有多組測試資料,對於每組資料,示例1輸出a+b的值。
2 610000000000000000000 10000000000000000000000000000000
810000000000010000000000000000000
#include"stdio.h
"#include
"iostream
"#include
"string.h
"using
namespace
std;
struct
biginteger
size = 0
; }
//this is an init function.
void
set(char str)}}
biginteger
operator + (const biginteger &a) const
if(nextmove!=0
)
return
ret;
};void
output()
}cout
<}
}a,b,c;
intmain()
return0;
}
以前寫密碼學設計的時候就一直聽說有高精度的設計,今天終於也實現了一把高精度的加法。因為從前沒有接觸過,所以也把思想放這裡,方便以後查閱。
高精度的演算法實現的思想大致為:
①建立乙個結構體,在結構體中定義陣列,將很大的數分成幾個部分裝到這個陣列中。
②之後重構運算子,將兩個數字一一對應的部分相加,並考慮進製的情況。
③定義輸入、輸出函式,將字串陣列輸入並處理到結構體的陣列中。
不過結構體中的細節要考慮一些,畢竟演算法比較嚴謹。
之後我將近期寫的部分**放上來。
求正整數n(n>1)的質因數的個數。 相同的質因數需要重複計算。如120=2*2*2*3*5,共有5個質因數。
可能有多組測試資料,每組測試資料的輸入是乙個正整數n,(1示例1120
5
#include"stdio.h
"#include
"iostream
"using
namespace
std;
int prime[100000
];int flag[100000
];int f=0
;int
init()
for (int j = 2; j < 10000; ++j)
}return0;
}int
main()
count++;
if(n==1) break
; }
}if(n!=1
)int ans=0
;
for (int j = 0; j < count; ++j)
cout
}return0;
}
output the k-th prime number.
k≤10000
the k-th prime number.示例1
37
517
//prime number
#include
"stdio.h
"#include
"iostream
"#include
"math.h
"using
namespace
std;
int prime[100000
];int f=0
;int
init()
for (int j = 2; j <=100000 ; ++j) }}
return0;
}int
main()
return0;
}
這是素數的處理方法,使用預處理先行處理之後就很方便得到了。
輸入兩個正整數,求其最大公約數。
測試資料有多組,每組輸入兩個正整數。
對於每組輸入,請輸出其最大公約數。示例1
49 14
7
//最大公約數
#include "
stdio.h
"#include
"iostream
"using
namespace
std;
int init(int a, int
b)
else
}int
main()
}
輸入乙個整數,將其轉換成八進位制數輸出。
輸入包括乙個整數n(0<=n<=100000)。
可能有多組測試資料,對於每組資料,示例1輸出n的八進位制表示數。
789
71011
//八進位制#include
"stdio.h
"#include
"iostream
"using
namespace
std;
intmain()
for (int i = flag-1; i >=0 ; i--)
cout
<}
}
這是進製轉換型別的題目,這種題目比較基礎,但是考的也挺多。
所以下面我放上去通用的題目,輸入任意進製 轉化為任意進製。
例如:15 aab3 7
將15進製轉換為7進製並輸出。
//數值轉換
#include
"iostream
"#include
"string.h
"#include
"stdio.h
"using
namespace
std;
intmain()
if(input[i]>='
a'&&input[i]<='z'
)
if(input[i]>='
a'&&input[i]<='z'
) ans+=x*first;
first=first*n;
}char output[100
];
int flag=0
;
do
else
flag ++;
ans/=m;
}while
(ans);
for (int j = flag-1; j >=0 ; j--)
cout
<}
}
輸入兩個不超過整型定義的非負10進製整數a和b(<=231-1),輸出a+b的m (1 < m <10)進製數。
輸入格式:測試輸入包含若干測試用例。每個測試用例佔一行,給出m和a,b的值。當m為0時輸入結束。
輸出格式:每個測試用例的輸出佔一行,輸出a+b的m進製數。示例1
8 1300 482 1 7
0
25041000
////created by 陳平 on 2018/4/22.
//又一板 a+b
#include "
stdio.h
"#include
"iostream
"#include
"math.h
"using
namespace
std;
long
long
a,b;
int mfunction(int m, long
long
a)
for (int i = flag-1; i >=0 ; i--)
cout
}int
main()
return0;
}
C 學習之路 day6
day6知識點 1.在運算子過載時盡量遵循原有預設的規則,如以下 int a b c a b c 是錯誤的 而在運算子過載中 complex complex operator complex another complex c1 1,2 c2 2,3 c1 c2 c 是正確的,但不遵循預設語法規則 ...
Python學習日記day6
字串型別及操作 知識點1 使用 m n k 根據步長對字串切片 m缺失表示至開頭,n缺失表示至結尾。k為步長,擷取的字串位置為m到n 1 知識點2 轉義符號 轉義符號後的字元為原始字元 知識點3 字串操作符 x y 連線兩個字串x和y n x 或 x n 複製n次字串x x in s 如果x是s的子...
JAVA學習筆記Day6
型別相同,個數不同時構成可變引數。列 private static int sumup int.values 1 氣泡排序 相鄰的兩個數比較大小並按規律調換位置,值到確定從數值依次從小到大。2 選擇排序 確定乙個位置最大或最小,然後分別用其餘的數與當前確定位置的數進行比較,如果想拿到從大到小,那麼每...