日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

NOIP復(fù)賽復(fù)習(xí)(二)文件讀寫與數(shù)論模板

 長(zhǎng)沙7喜 2018-04-16

 定期推送賬號(hào)信息學(xué)新聞,競(jìng)賽自主招生信息學(xué)專業(yè)知識(shí),信息學(xué)疑難解答,融科教育信息學(xué)競(jìng)賽培訓(xùn)等諸多優(yōu)質(zhì)內(nèi)容的微信平臺(tái),歡迎分享文章給你的朋友或者朋友圈

文件讀入讀出

假設(shè)題目名為“add”,那么文件夾名為“add”,c++程序名為“add.cpp”,讀入文件名為“add.in”,輸出文件名為“add.out”。四個(gè)的拼寫均不可有誤,包括大小寫差異。千萬不要調(diào)試后就忘記修改文件讀入讀出了。 

#include

int main(){

   freopen('add.in','r',stdin);//read

   freopen('add.out','w',stdout);//write

}




數(shù)論算法

1、線性篩

#include

#include

#include

#include

using namespace std;

const int maxn=200005;

int prime[maxn];

bool not_prime[maxn];

int main()

{

    int n,cnt=0;

   scanf('%d',&n);

   memset(not_prime,0,sizeof(not_prime));

   not_prime[1]=true;

    for(inti=2;i<>

    {

       if(!not_prime[i])

           prime[++cnt]=i;

        for(intj=1;j<>

        {

           if(prime[j]*i>n)    break;

           not_prime[prime[j]*i]=true;

            if(i%prime[j]==0) break;

        }

    }

    for(inti=1;i<>

       printf('%d ',prime[i]);

    return 0;

}

 

2、埃氏篩

#include

#include

#include

#include

using namespace std;

inline int read()

{

    char c;

    c=getchar();

   for(;c>'9'||c<>

    int sum=0;

   for(;c<='9'&&c>='0';c=getchar())sum=sum*10+c-48;

    return sum;

}

int n,m;

bool f[10010000];

int main()

{

   n=read(),m=read();

   memset(f,true,sizeof(f));

   f[0]=f[1]=false;

    for(inti=2;i<>

    if(f[i])

    for(intj=2;i*j<>

    for(inti=1;i<>

    {

        int x;

        x=read();

       if(f[x])printf('Yes\n');

        elseprintf('No\n');

    }

    return 0;

}

 

3、拓展歐幾里得算法

#include

#include

#include

#include

using namespace std;

int x,y;

int exgcd(int a,int b)

{

    if(!b)

    {

        x=1;

        y=0;

        return a;

    }

    else

    {

        int t;

        intd=exgcd(b,a%b);

        t=x;

        x=y;

        y=t-a/b*x;

        return d;

    }

}

int main()

{

    int a,b;

   scanf('%d%d',&a,&b);

    exgcd(a,b);

// cout<><>

   cout<><'><><>

    return 0;

}

 

4、GCD&LCM

#include

#include

#include

using namespace std;

int gcd(int a,int b)

{

    if(!b) returna;

    else returngcd(b,a%b);

}

int lcm(int a,int b)

{

    returna/gcd(a,b)*b;

}

int main()

{

    int a,b;

   scanf('%d%d',&a,&b);

   cout<><'><><>

    return 0;

}

 

5、分解質(zhì)因數(shù)

#include

#include

#include

using namespace std;

int main()

{

    long long n;

   scanf('%lld',&n);

    for(long longi=2;i<>

    {

        while(n!=i)

        {

           if(n%i==0)

            {

                printf('%lld*',i);

               n=n/i;             

            }

            elsebreak;

        }

    }

   printf('%lld',n);

    return 0;

}

 

6、大數(shù)翻倍法

#include

#include

#include

using namespace std;

int a[233],mo[233];

int gcd(int a,int b)

{

    if(!b) returna;

    else returngcd(b,a%b);

}

int lcm(int a,int b)

{

    returna/gcd(a,b)*b;

}

int main()

{

    int n;

   scanf('%d',&n);

    for(inti=1;i<>

       scanf('%d%d',&a[i],&mo[i]);

    intans=0,nowmo=1;

    for(inti=1;i<>

    {

        intother=a[i],othermo=mo[i];

       if(othermo>nowmo)

        {

           swap(ans,other);

           swap(nowmo,othermo);

        }

       while(ans%othermo!=other)

           ans+=nowmo;

       nowmo=lcm(nowmo,othermo);

    }

   printf('%d',ans);

}

 

7、快速冪

#include    

using namespace std;    

const int MOD = 1007;    

int xx(int a,int n,int MOD) 

{    

    int ret=1;    

    int tmp=a%MOD;    

    while(n)    

    {    

        if(n&1)    

            ret=ret*tmp%MOD;    

        tmp=tmp*tmp%MOD;    

        n>>=1;    

    }    

    return ret;    

}    

int main()    

{    

    int m,n;    

    while(scanf('%d%d',&m,&n)==2)    

    {    

        printf('%d\n',xx(m,n,MOD));    

    }    

}    

 

8、位運(yùn)算

功能

示例

位運(yùn)算

去掉最后一位

(101101->10110)

x >> 1

在最后加一個(gè)0

(101101->1011010)

x  <>

在最后加一個(gè)1

(101101->1011011)

x <>

把最后一位變成1

(101100->101101)

x  | 1

把最后一位變成0

(101101->101100)

x | 1-1

最后一位取反

(101101->101100)

x  ^ 1

把右數(shù)第k位變成1

(101001->101101,k=3)

x | (1 <>

把右數(shù)第k位變成0

(101101->101001,k=3)

x  & !(1 <>

右數(shù)第k位取反

(101001->101101,k=3)

x ^ (1 <>

取末三位

(1101101->101)

x  & 7

取末k

(1101101->1101,k=5)

x & (1< k="">

取右數(shù)第k

(1101101->1,k=4)

x  >> (k-1) & 1

把末k位變成1

(101001->101111,k=4)

x | (1 <>

k位取反

(101001->100110,k=4)

x  ^ (1 <>

把右邊連續(xù)的1變成0

(100101111->100100000)

x & (x+1)

把右起第一個(gè)0變成1

(100101111->100111111)

x  | (x+1)

把右邊連續(xù)的0變成1

(11011000->11011111)

x | (x-1)

取右邊連續(xù)的1

(100101111->1111)

(x  ^ (x+1)) >> 1

去掉右起第一個(gè)1的左邊

(100101000->1000)

x & (x ^ (x-1))

長(zhǎng)沙信息學(xué)競(jìng)賽

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多