zoukankan      html  css  js  c++  java
  • 3.11-3.17 周记

    3.11-3.17

    这周比较水,周一满课,看了看单调队列优化dp,晚上准备英语演讲,做了些天梯赛的题目,周二几乎整天都在准备英语演讲。随手过了几个L1的题目。星期三结束了英语演讲之后,晚上怒刷L1。星期四将L1完结,开刷L2。周五看了看python,数据库,晚上继续L2。周六参加了西北大学校赛,跟sx大佬a了五个题,拿了全场第一个一血,太刺激了。最后过了五个题也还算完美。今天匆匆忙忙补完了作业,不敢拖拉,赶紧补上本周的总结

    1. 天梯赛练习集-L1部分

    L1-006 连续因子

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    int main(){
        cin>>n;
        int max_len = sqrt(n);
        int res_begin = 0,res_len = 0;
        for(int i=2;i<=max_len;i++){
            if(n%i==0){
                int k = n,cnt = 0,now = i;
                while(k%now==0){
                    k/=now;
                    cnt++;
                    now++;
                }
                if(cnt>res_len){
                    res_len = cnt;
                    res_begin = i;
                }
            }
        }
        if(res_len == 0){
            cout<<1<<endl<<n<<endl;
            return 0;
        }
        printf("%d
    %d",res_len,res_begin);
        for(int i=1;i<res_len;i++)
            printf("*%d",res_begin+i);
        puts("");
        return 0;
    }
    

    L1-020 帅到没朋友

    这个题比较坑,输出的id必须是5位,而且需要有前缀0

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
    	int n,p[100000]={0};
    	cin>>n;
    	for(int i=0;i<n;i++)
    	{
    		int x;
    		cin>>x;
    		for(int j=0;j<x;j++)
    		{
    			int y;
    			cin>>y;
    			if(x!=1) 
    			p[y]=1;
    			
    		}
    	}
    	int m,sum=0,flag=1;
    	cin>>m;
    	for(int i=0;i<m;i++)
    	{
    		int o;
    		cin>>o;
    		if(p[o]==0)
    		{
    			p[o]=1;
    			sum++;
    			if(flag==1)
    			{
    		  		printf("%05d",o);
    				flag=0;
    		    }
    		 	else
    			{
    				printf(" %05d",o);
    			}
    		}
    	}
    	if(sum==0)
    	{
    		cout<<"No one is handsome";
    	}
    	cout<<endl;
    	return 0;
    }
    

    L1-023 输出GPLT

    这个题也卡了一点时间,主要问题就是最后循环不到位,输出的不完全

    #include <bits/stdc++.h>
    using namespace std;
    char s[10010];
    int G,P,L,T;
    int a[4];
    char t[4] = {'G','P','L','T'};
    int main(){
        cin>>s;
        int len = strlen(s);
        for(int i=0;i<len;i++){
            if(s[i]=='G'||s[i]=='g')G++;
            else if(s[i]=='P'||s[i]=='p')P++;
            else if(s[i]=='L'||s[i]=='l')L++;
            else if(s[i]=='T'||s[i]=='t')T++;
        }
        a[0] = G,a[1] = P,a[2] = L,a[3] = T;
        int sum = G+P+L+T;
        //循环条件Len+4
        for(int i=0;i<len+4;i++){
            if(a[i%4]){
                printf("%c",t[i%4]);
                a[i%4]--;
                sum--;
                if(sum==0)break;
            }
        }
        puts("");
        return 0;
    }
    

    L1-025 正整数A+B

    • 这个题理解错题意了,输入在一行给出A和B,中间是空格隔开,输入样例里面有一个多数字的,其实第一个空格之后的都属于B,简直坑惨了
    #include <bits/stdc++.h>
    using namespace std;
    string A,B;
    int a;int b;
    int convert(string s){
        int res = 0;
        int len = s.length();
        if(len<1||len>4)return false;
        for(int i=0;i<len;i++)
            res = res*10+s[i]-'0';
        return res;
    }
    bool check(string s){
        int len = s.length();
        if(len<1||len>4)return false;
        for(int i=0;i<len;i++)
            if(!isdigit(s[i]))return false;
        int num = convert(s);
        if(num>1000||num<1)return false;
        return true;
    }
    char str1[1100],str2[1100];
    int main(){
        char str1[1100], str2[1100];
        scanf("%s",str1);
        getchar();
        cin.getline(str2,sizeof str2);
        A = string(str1);
        B = string(str2);
        //cout<<A<<endl<<B<<endl;
        int f1=0,f2 = 0;
        if(check(A)){
            f1 = 1;
            a = convert(A);
        }
        if(check(B)){
            f2 = 1;
            b = convert(B);
        }
        if(f1)printf("%d",a);
        else printf("?");
        printf(" + ");
        if(f2)printf("%d",b);
        else printf("?");
        printf(" = ");
        if(f1&&f2)printf("%d",a+b);
        else printf("?");  
        puts("");
        return 0;
    }
    

    L1-046 整除光棍

    import java.util.Scanner;
    import java.math.BigInteger;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner cin = new Scanner(System.in);
    		String str = cin.next();
    		BigInteger a = new BigInteger(str);
    		BigInteger b = new BigInteger("1");
    		BigInteger end = new BigInteger("0");
    		int num = 1;
    		while(true) {
    			if(end.equals(b.remainder(a))) {
    				break;
    			}
    			b = b.multiply(new BigInteger("10")).add(new BigInteger("1"));
    			num++;
    		}
    		System.out.println(b.divide(a)+" "+num);
    	}
    
    }
    
    
    • 竖式除法自己没想出来
    #include<iostream>
    using namespace std;
    int main()
    {
    	int x,s=0,n=0;//定义除数,被除数,位数 
    	cin>>x;
    	while(s<x)
    	{
    		s=s*10+1;//被除数末位添1直到不小于被除数 
    		n++;//位数增1 
    	}
    	while(true)//开始进行除法运算 
    	{
    		cout<<s/x;//输出商 
    		s%=x;//被除数更新为余数 
    		if(s==0)break;//余数为0则结束 
    		s=s*10+1;//余数末位添1
    		n++;//位数增1 
    	}
    	cout<<' '<<n;
    	return 0;
    }
    

    L1-049 天梯赛座位分配

    • 这题逼我用bfs做,实在是无法正视
    #include <bits/stdc++.h>
    using namespace std;
    int n,a[101];
    int res[101][101];
    struct node{
        int x,y;
    };
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++)scanf("%d",&a[i]);
        queue<node> q;
        for(int i=1;i<=n;i++)q.push({i,1});
        int cnt = 0;
        while(!q.empty()){
            int x = q.front().x;
            int y = q.front().y;
            q.pop();
            res[x][y] = ++cnt;
            if(y<a[x]*10)q.push({x,y+1});
        }
        for(int i=1;i<=n;i++){
            printf("#%d
    ",i);
            int jud = 1;
            for(int j=1;j<=a[i]*10;j++){
    
                int now = res[i][j];
                if(j!=1&&res[i][j]==res[i][j-1]+1){
                    now = res[i][j]+jud;
                    jud++;
                }
                if(j%10==1)printf("%d",now);
                else printf(" %d",now);
                if(j%10==0)puts("");
            }
        }
        return 0;
    }
    

    2.天梯赛练习集-L2部分

    这部分放到下一周叭,就这么愉快的说定了。我要去补题了。

  • 相关阅读:
    分布式锁原理及实现方式
    【FAQ】Maven 本地仓库明明有jar包,pom文件还是报错解决办法
    【FAQ】tomcat启动jdk版本不一致
    【Map,HashMap,Vector,List】资料汇总
    【FAQ】调用接口序列化问题
    【docker】docker下安装mysql
    linux tcpdump抓包Post请求
    Springboot 在@Configuration注解的勒种 使用@Autowired或者@value注解 读取.yml属性失败
    Springboot使用Shiro-整合Redis作为缓存 解决定时刷新问题
    CentOS yum 安装nginx
  • 原文地址:https://www.cnblogs.com/1625--H/p/10548249.html
Copyright © 2011-2022 走看看