藍橋杯 基礎練習 大數演算法

2021-07-04 13:03:39 字數 1818 閱讀 2200

之前做過很多大數的題目了吧,現在,那麼我們來統計下簡單的大數問題。

大數加法,大數減法,大數乘除,大數篩選,大數階層,好了,現在就針對這幾種問題貼上簡單**吧(大數加減和乘除就列出加法和乘法,其它的型別差不多)

我們都知道,大數,要用陣列來存放,都是簡單的進製問題,這些就不多說,貼**:

大數加法:

#include

#include

#include

#include

using

namespace

std;

int main()

for(int i=strlen(b)-1,j=0; i>=0; i--)

for(int i=0; i<1001; i++)

}int i;

for( i=1000; i>=0; i--)

if(s[i])

break;

//cout<<"ffffffffffffffffffffff"=0;j--)

cout

0;}

大數乘法

#include

#include

char s[1000];

void mult(char a,char b)

,flag=0;

char result[500];

alen=strlen(a);blen=strlen(b);

for (i=0;ifor (j=0;j'0')*(b[j]-'0');

for (i=alen-1;i>=0;i--)

for (i=blen-2;i>=0;i--)

if (sum!=0)

for (i=0;i'0';

for (i=k-1;i>=0;i--) s[i]=result[k-1-i];

s[k]='\0';

while(1)

}int main()

if(frag==0)

printf("0");

printf("\n");

}return

0;}

大數階層

#include

#include

#include

using

namespace

std;

#define base 10001

int f[base];

int main()

while(c)

}int i;

for(i=base-1; i>=0; i--)

if(f[i])

break;

for(int j=i; j>=0; j--)

cout

0;}

大數篩選

#include 

#include

#include

#include

using

namespace

std;

const

int n = 300000005;

bitset

prime;

void work(int l,int r)

} int cnt = (l <=2 && 2

<= r);

for(int i=5; i<=r; i+=4)

if(i >= l && prime[i]) cnt++;

cout

藍橋杯 基礎練習

basic 1 閏年判斷 給定乙個年份,判斷這一年是不是閏年。當以下情況之一滿足時,這一年是閏年 年份是4的倍數而不是100的倍數 年份是400的倍數。include using namespace std intmain basic 2 01字串 對於長度為5位的乙個01串,每一位都可能是0或1,...

藍橋杯 基礎練習

模擬。include using namespace std intmain 五重迴圈列舉或dfs均可。include using namespace std string s 00000 void dfs int dep s dep 0 dfs dep 1 s dep 1 dfs dep 1 in...

藍橋杯練習 演算法訓練 區間k大數查詢

題目鏈結 問題描述 給定乙個序列,每次詢問序列中第l個數到第r個數中第k大的數是哪個。輸入格式 第一行包含乙個數n,表示序列長度。第二行包含n個正整數,表示給定的序列。第三個包含乙個正整數m,表示詢問個數。接下來m行,每行三個數l,r,k,表示詢問序列從左往右第l個數到第r個數中,從大往小第k大的數...