周考总结(1~3)

 就这样

#include<bits/stdc++.h>
using namespace std;
int n,op;
void begin(){
    scanf("%d",&n);
    printf("     考试测虐\n");
    printf("1.字符串题\n");
    printf("2.数论题\n");
    printf("3.图论题\n");
    printf("4.数据结构\n");
    scanf("%d",&op);
    if(op==1){
        printf("注意是否可以贪心\n如果不可以就想想dp\n考虑好代码的实现\n最重要的还是考场心态,毕竟这常常是第一道\n实在不行,该放弃早放弃,最多用半个小时\n");
    }
    else if(op==2){
        printf("数论题要敢做\n浅浅的把这几次所需的模板总结一下\n");
        int m;
        printf("1.快速幂\n2.phi函数的求取\n3.线性筛phi\n4.exgcd\n");
        scanf("%d",&m);
        if(m==1){
            printf("int fpow(int ba,int po,int mod){\n");
            printf("    int res=1;\n");
            printf("    while(po){\n");
            printf("        if(po&1) res=(res*ba)%%mod;\n");
            printf("        ba=(ba*ba)%%mod;po>>=1;\n");
            printf("    }\n");
            printf("    return res;\n");
            printf("}\n");
        }
        else if(m==2){
            printf("int getoula(int x){\n");
            printf("    int res=x;\n");
            printf("    for(int i=2;i*i<=x;i++){\n");
            printf("        while(x%%i==0)x/=i;\n");
            printf("        res-=res/i;\n");
            printf("    }\n");
            printf("    if(x>1) res-=res/n;\n");
            printf("    return res;\n");
        }
        else if(m==3){
            printf("void oula(int n){\n");
            printf("    sta[1]=1,phi[1]=1;\n");
            printf("    for(int i=2;i<=1000005;i++){\n");
            printf("        if(!sta[i])pri[++cnt]=i,phi[i]=i-1//质数的phi值为其本身减1\n");
            printf("        for(int j=1;j<=cnt&&pri[j]*i<=1000005;j++){\n");
			printf("            sta[pri[j]*i]=1;//再也没翻身做质数的机会了 \n");
			printf("            if(i%%pri[j]==0){//i是pri[j]的倍数 \n");
		    printf("                phi[pri[j]*i]=phi[i]*pri[j]; \n");
			printf("                break;\n");
			printf("            }\n");
			printf("            phi[pri[j]*i]=phi[i]*(pri[j]-1);\n");
		    printf("        } \n");
	        printf("    } \n");
            printf("}\n");
        }
        else if(m==4){
            printf("int exgcd(int a,int b,&s,&t){\n");
	        printf("    if(!b){\n");
            printf("        s=1;\n");
            printf("        t=0;\n");
            printf("        return a;\n");
            printf("    }\n");
            printf("    int gcd=exgcd(b,a%b,s,t);\n");
            printf("    int x=s;\n");
            printf("    s=t;\n");
            printf("    t=x-a/b*t;\n");
            printf("    return gcd;\n");
            printf("}\n");
        }
    }
    else if(op==3){
        printf("1.lca\n");
        printf("2.点双与边双\n");
    }
    else if(op==4){
        printf("1.线段树\n")
    }
}
int main(){
    begin();
}

posted @   MegaSam  阅读(7)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示