c_33

705

hai阿卢
Acacia_Ma
Eartha

Castle_4
wydxry
acwing_9430

._7732

52Hertz_49
dul

c_33
8天前

C++中的高精度整数除以低精度整数

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// A/b, 商为C, 余数为r
vector<int> div(vector<int> &A, int b, int &r) {
vector<int> C;

r = 0;
for ( int i = A.size() - 1; i >= 0; i -- ) {
r = r * 10 + A[i];
C.push_back(r / b);
r %= b;
}
reverse(C.begin(), C.end());
while ( C.size() > 1 && C.back() == 0 ) C.pop_back(); //消去前导0

return C;
}

int main() {
string a;
int b;
vector<int> A;

cin >> a >> b;
for ( int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');

int r;
vector<int> C = div(A, b, r);
for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
cout << endl << r;

return 0;
}


c_33
8天前

C++中的高精度整数乘低精度整数

#include <iostream>
#include <vector>

using namespace std;

vector<int> mul(vector<int> &A, int b) {
vector<int> C;

int t = 0;
for ( int i = 0; i < A.size() || t; i ++ ) {
if ( i < A.size() ) t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}

return C;
}

int main() {
string a;
int b;
vector<int> A;

cin >> a >> b;
for ( int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');

vector<int> C = mul(A, b);
for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];

return 0;
}


c_33
8天前

C++中的高精度减法

#include <iostream>
#include <vector>

using namespace std;

//判断A>=B是否成立
bool cmp(vector<int> &A, vector<int> &B) {
if ( A.size() != B.size() ) return A.size() > B.size();
for ( int i = A.size() - 1; i >= 0 ; i -- ) {
if ( A[i] != B[i] )
return A[i] > B[i];
}
return true;
}

vector<int> sub(vector<int> &A, vector<int> &B) {
vector<int> C;

int t = 0;
for ( int i = 0; i < A.size(); i ++ ) {
t = A[i] - t;
if ( i < B.size() ) t -= B[i];
C.push_back((t + 10) % 10);
if ( t < 0 ) t = 1;
else t = 0;
}
while ( C.size() > 1 && C.back() == 0 ) C.pop_back(); //去掉前导0

return C;
}

int main() {
string a, b;
vector<int> A, B;

cin >> a >> b;
for ( int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');
for ( int i = b.size() - 1; i >= 0; i -- ) B.push_back(b[i] - '0');

if (cmp(A, B)) {
vector<int> C = sub(A, B);

for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
} else {
vector<int> C = sub(B, A);

cout << "-";
for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
}

return 0;
}


c_33
9天前

C++中的高精度加法

#include <iostream>
#include <vector>

using namespace std;

vector<int> add(vector<int> &A, vector<int> &B) {
vector<int> C;

int t = 0; //进位
for ( int i = 0; i < A.size() || i < B.size(); i ++ ) {
if (i < A.size()) t += A[i];
if (i < B.size()) t += B[i];
C.push_back(t % 10);
t /= 10;
}
if (t) C.push_back(1);

return C;
}

int main() {
string a, b;
vector<int> A, B;

cin >> a >> b;
for ( int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0'); //将字符类型转变成数字类型
for ( int i = b.size() - 1; i >= 0; i -- ) B.push_back(b[i] - '0');

for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];

return 0;
}


c_33
11天前
class Solution {
public:
int Fibonacci(int n) {
int a = 0, b = 1;
while ( n -- ) {
int c = a + b;
a = b;
b = c;
}
return a;
}
};


c_33
11天前
#include <iostream>

using namespace std;

int n;

void dfs(int u, int nums[], bool st[])
{
if (u > n)
{
for (int i = 1; i <= n; i ++ ) cout << nums[i] << " ";
cout << endl;
}
else
{
for (int i = 1; i <= n; i ++ )
if (!st[i])
{
st[i] = true;
nums[u] = i;
dfs(u + 1, nums, st);
st[i] = false;  // 恢复现场
}
}
}

int main()
{
int nums[10];
bool st[10] = {0};

cin >> n;
dfs(1, nums, st);

return 0;
}


c_33
11天前
#include <iostream>

using namespace std;

int n, m;
int res = 0;

int fun(int x, int y) {
if ( x == n && y == m ) res ++;
else {
if ( x < n ) fun(x+1, y);
if ( y < m ) fun(x, y+1);
}
}

int main() {

cin >> n >> m;
fun(0, 0);
cout << res;

return 0;
}


c_33
11天前
#include <iostream>

using namespace std;

int n, m;
int res = 0;

int fun(int x, int y) {
if ( x == n && y == m ) res ++;
else {
if ( x < n ) fun(x+1, y);
if ( y < m ) fun(x, y+1);
}
}

int main() {

cin >> n >> m;
fun(0, 0);
cout << res;

return 0;
}


c_33
11天前
#include <iostream>

using namespace std;

int n;
int cnt = 0;

void fun(int k) {

if ( k == n ) cnt ++;
else if ( k < n ) {
fun(k+1);
fun(k+2);
}
}

int main() {

cin >> n;
fun(0);
cout << cnt;

return 0;
}


c_33
11天前

### 选择排序法

#include <iostream>

using namespace std;

void sort(int a[], int l, int r) {
int index;

for ( int i = l; i <= r; i ++ ) {
index = i;
for ( int j = i+1; j <= r; j ++ )
if ( a[j] < a[index] )
index = j;
swap(a[index], a[i]);
}
}

int main() {
int a[1000];
int n, l, r;

cin >> n >> l >> r;
for ( int i = 0; i < n; i ++ ) cin >> a[i];
sort(a, l, r);
for ( int i = 0; i < n; i ++ ) cout << a[i] << " ";

return 0;
}