蓝桥杯2021B

卡片

#include<iostream>
using namespace std;
int main(){
    int a[10]={2021,2021,2021,2021,2021,2021,2021,2021,2021,2021};//每个卡片2021个,直接定义
    int i,t;
for(i=1;;i++){
    t=i;
    if(t<=9){
        if(a[t]==0){
            goto out;
        }
        a[t]--;
        
    }
    if(t>=10){
        while(t>0){
            if(a[t%10]==0){
                goto out;
            }
            a[t%10]--;
            t/=10;
        }
    }
}
out:
    cout<<i-1;
    return 0;
}

物品摆放

#include<iostream>

using namespace std;

#include<math.h>

const int N=1e6+10;

long long int a[N];//定义全局变量,因为测量的数据比较大,long long 类型

int main()

{

    int i,j,k,p=0,c=0,m=0,g=0,v=0;

    long long int n=2021041820210418;

    int t=sqrt(n);//对这个大数取个根号,数据更小一点

for(i=1;i<=t;i++){

    if(n%i==0){

        a[p]=i;//将所有他可以整除的数放在数组里

        p++;

        a[p]=n/i;

        p++;

    }

}

for(i=0;i<p;i++){

for(c=0;c<p;c++){

    for(g=0;g<p;g++){

        if(a[i]*a[c]*a[g]==n){//直接暴力三重循环

            m++;

        }

    }

}

}

cout<<m;

    return 0;

}

最小路径

#include<iostream>//Dijkstra模型

#include<cstring> //memset()原型 ,是所有数据为0;
#include<math.h>
using namespace std;

const int N=3000; 

const int INF=0x3f; //这里可以理解为无穷大 

int graph[N][N]; //邻接矩阵存储图 

int dist[N];          //记录最短路径值

bool visited[N]; //判断节点是否访问

int gcd(int a,int b){ //最大公约数 

    return b==0?a:gcd(b,a%b);

}

int lem(int a,int b){ //最小公倍数 

    return a*b/gcd(a,b);

}

int dijkstra(int n){

    //初始化 

    memset(dist,INF,sizeof(dist));

    memset(visited,false,sizeof(visited));

    dist[1]=0;

     

    for(int i=1;i<=n;++i){

        int k=-1;

        for(int j=1;j<=n;++j){ //获取距离源点最近点 

            if(!visited[j]&&(k==-1||dist[j]<dist[k])){

                k=j;

            }

        }

        visited[k]=true;

        for(int j=1;j<=n;++j){

            if(dist[k]+graph[k][j]<dist[j]){

                dist[j]=dist[k]+graph[k][j]; 

            }

        }

    }

    if(dist[n]==INF) return -1;

    return dist[n]; 

}

int main(){

    int n=2021; //节点数 

    //初始化 

    memset(graph,INF,sizeof(graph));

    //构图 

    for(int i=1;i<=n;++i){

        for(int j=1;j<=n;++j){

            if(abs(i-j)<=21){

                graph[i][j]=lem(i,j);

            }

        }

    }

    //求出最短路径,输出结果 

    cout<<dijkstra(n)<<endl;

    return 0;
}

空间

#include<stdio.h>
int main(){
     int t=256*1048576;
    printf("%d",t/4);
    return 0;

时间显示

#include<iostream>

using namespace std;

int main(){

    int n,i;

    cin>>n;

    long long int a[n];//数据大小比较大

    long long int b[n];

    for(i=0;i<n;i++) cin>>a[i];

    for(i=0;i<n;i++){

        a[i]/=1000;

        b[i]=a[i];//将毫秒装换为秒

if(a[i]/86400>1) {

a[i]%=86400,b[i]%=86400;//确定小时,分钟,秒

a[i]/=60;b[i]%=60;

}

else{

a[i]/=60;b[i]%=60; 

}

    }

for(i=0;i<n;i++) {

    if(a[i]/60>=10){

        if(a[i]%60>=10&&b[i]>=10) cout<<a[i]/60<<":"<<a[i]%60 <<":"<<b[i]<<endl;

        else if(a[i]%60>=10&&b[i]<10)cout<<a[i]/60<<":"<<a[i]%60 <<":"<<"0"<<b[i]<<endl;

        else if(a[i]%60<10&&b[i]<10)cout<<a[i]/60<<":"<<"0"<<a[i]%60 <<":"<<"0"<<b[i]<<endl;

        else if(a[i]%60<10&&b[i]>=10)cout<<a[i]/60<<":"<<"0"<<a[i]%60 <<":"<<b[i]<<endl;

}else if(a[i]/60<10){

    if(a[i]%60>=10&&b[i]>=10) cout<<"0"<<a[i]/60<<":"<<a[i]%60 <<":"<<b[i]<<endl;

    else if(a[i]%60<10&&b[i]>=10) cout<<"0"<<a[i]/60<<":"<<"0"<<a[i]%60 <<":"<<b[i]<<endl;

   else if(a[i]%60<10&&b[i]<10)cout<<"0"<<a[i]/60<<":"<<"0"<<a[i]%60 <<":"<<"0"<<b[i]<<endl;

   else if(a[i]%60>=10&&b[i]<10)cout<<"0"<<a[i]/60<<":"<<a[i]%60 <<":"<<"0"<<b[i]<<endl;//这一坨是判断加不加零的情况

}

}

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值