zoukankan      html  css  js  c++  java
  • C++-蓝桥杯-入门训练

    Fibonacci数列,快速幂

     1 #include <cstdio>
     2 struct Matrix{int a[5][5];};
     3 const int N=2,MOD=10007;
     4 Matrix A,B,O,I;
     5 Matrix Mul(Matrix A,Matrix B){
     6     Matrix C=O;
     7     for(int i=1;i<=N;i++)
     8         for(int j=1;j<=N;j++)
     9             for(int k=1;k<=N;k++)
    10                 C.a[i][j]=(C.a[i][j]+A.a[i][k]*B.a[k][j])%MOD;
    11     return C;
    12 }
    13 Matrix Pow(Matrix A,int n){
    14     Matrix B=I;
    15     for(;n;n>>=1,A=Mul(A,A))if(n&1)B=Mul(B,A);
    16     return B;
    17 }
    18 int main(){
    19     for(int i=1;i<=2;i++)for(int j=1;j<=2;j++)O.a[i][j]=0,I.a[i][j]=(i==j);
    20     A.a[1][1]=0,A.a[1][2]=1;
    21     A.a[2][1]=1,A.a[2][2]=1;
    22     int n;scanf("%d",&n),B=Pow(A,n+1),printf("%d
    ",B.a[1][1]); 
    23     return 0;
    24 }

    圆的面积

    1 #include <cmath>
    2 #include <cstdio>
    3 typedef double db;
    4 db r,pi=acos(-1);
    5 int main(){
    6     scanf("%lf",&r),printf("%.7lf",pi*r*r);
    7     return 0;
    8 }

    序列求和

    1 #include <cstdio>
    2 typedef long long ll;
    3 ll ans,n;
    4 int main(){
    5     scanf("%lld",&n),printf("%lld",(1+n)*n/2);
    6     return 0;
    7 }

    A+B问题

    1 #include <cstdio>
    2 int main(){
    3     int a,b;scanf("%d%d",&a,&b),printf("%d",a+b);
    4     return 0;
    5 }

    数列排序,STL使用

     1 #include <queue>
     2 #include <cstdio>
     3 using namespace std;
     4 priority_queue<int>q;
     5 int main(){
     6     int n,a;scanf("%d",&n);
     7     for(int i=1;i<=n;i++)scanf("%d",&a),q.push(-a);
     8     for(int i=1;i<=n;i++)printf("%d ",-q.top()),q.pop();
     9     return 0;
    10 }

    十六进制转八进制,进制转化

     1 #include <cstdio>
     2 #include <string>
     3 #include <cstring>
     4 #include <iostream>
     5 using namespace std;
     6 char s[100010];
     7 int main(){
     8     int n,len,num,ok;scanf("%d",&n);
     9     for(int i=1;i<=n;i++){
    10         scanf("%s",s+1),len=strlen(s+1);
    11         string ans="";
    12         for(int i=1;i<=len;i++)
    13             switch(s[i]){
    14                 case '0':ans+="0000";break;case '1':ans+="0001";break;
    15                 case '2':ans+="0010";break;case '3':ans+="0011";break;
    16                 case '4':ans+="0100";break;case '5':ans+="0101";break;
    17                 case '6':ans+="0110";break;case '7':ans+="0111";break;
    18                 case '8':ans+="1000";break;case '9':ans+="1001";break;
    19                 case 'A':ans+="1010";break;case 'B':ans+="1011";break;
    20                 case 'C':ans+="1100";break;case 'D':ans+="1101";break;
    21                 case 'E':ans+="1110";break;case 'F':ans+="1111";break;
    22             }//printf("%s
    ",ans.c_str());            
    23         switch(len%3){
    24             case 1:ans="00"+ans;break;
    25             case 2:ans="0"+ans;break;
    26         }
    27         len=ans.length();ok=0;
    28         for(int i=0;i<len;i+=3){
    29             num=4*(ans[i]-'0')+2*(ans[i+1]-'0')+(ans[i+2]-'0');//printf("%c %c %c
    ",ans[i],ans[i+1],ans[i+2]);
    30             if(num)ok=1;if(ok)putchar(num+'0');
    31         }
    32         puts("");
    33     }
    34     return 0;
    35 }

    阶乘计算,高精度

     1 #include <cstdio>
     2 #include <string>
     3 #include <cstring>
     4 #include <cstdlib>
     5 using namespace std;
     6 const int MAXN=5000;
     7 char buf[MAXN];
     8 struct BigData{
     9     int a[MAXN],cnt;
    10     void init(int c){cnt=c,memset(a,0,sizeof(a));}
    11     void Print(){for(int i=cnt;i>=1;i--)putchar(a[i]+'0');puts("");}
    12     void ReadInt(int x){
    13         memset(buf,0,sizeof(buf));
    14         itoa(x,buf+1,10);
    15         init(strlen(buf+1));
    16         for(int i=1;i<=cnt;i++)a[cnt-i+1]=buf[i]-'0';
    17     }
    18 };
    19 BigData Mul(BigData A,BigData B){
    20     BigData C;C.init(0);
    21     for(int i=1;i<=A.cnt;i++)
    22         for(int j=1;j<=B.cnt;j++){
    23             C.a[i+j-1]+=A.a[i]*B.a[j];
    24             C.a[i+j]+=C.a[i+j-1]/10;
    25             C.a[i+j-1]%=10;
    26         }
    27     C.cnt=A.cnt+B.cnt-1;
    28     if(C.a[C.cnt+1]>=1)C.cnt++;
    29     while(C.a[C.cnt]==0&&C.cnt>1)C.cnt--;
    30     return C;
    31 }
    32 BigData Ans,A;
    33 int main(){
    34     Ans.init(1),Ans.a[1]=1;
    35     int n;scanf("%d",&n);
    36     for(int i=1;i<=n;i++)A.ReadInt(i),Ans=Mul(Ans,A);
    37     Ans.Print();
    38     return 0;
    39 }
    ~~Jason_liu O(∩_∩)O
  • 相关阅读:
    深入探索 高效的Java异常处理框架
    Java多线程调试如何完成信息输出处理
    WebKit学习资源
    WebKit阅读起步
    Redis学习资源
    webkit在vs2008中编译
    【转】推荐几本学习MySQL的好书-MySQL 深入的书籍
    Mysql: 开启慢查询日志[ERROR] unknown variable 'log-slow-queries'处理办法
    Linux top命令详解
    eclipse svn同步过滤掉某些不需要同步的文件
  • 原文地址:https://www.cnblogs.com/JasonCow/p/12374675.html
Copyright © 2011-2022 走看看