• 7.12测试


    惨不忍睹

    第一题:最大那个什么质因数

    我都不知道质数的唯一且最大的因数就是自己,还写了个是质数就直接continue了...把那个去掉就AC了....

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    int prime(int a)
    {
    	if(a==1) 
    		return 0;
    	for(int k=2;k<=sqrt(a);k++)
    	{
    		if(a%k==0) return 0;
    	}
    	return 1;
    }
    int tcl(int a)
    {
    	int t,k;
    	for(k=a;k>=sqrt(a);k--)
    	{
    		t=a/k;
    		if(a%k==0 && (prime(k)))
    		{
    			return k;
    		}
    	}
    	return 0; 
    }
    int main()
    {
    	int n,a[5001],i,max=0,tmp=0;
    	scanf("%d",&n);
    	for(i=1;i<=n;i++)
    	{
    		scanf("%d",&a[i]);
    		if(tcl(a[i])>max) 
    		{
    			
    			max=tcl(a[i]);
    			tmp=a[i]/tcl(a[i]);
    		}	
    	}
    	int ans=tmp*max;
    	printf("%d",ans);
    	return 0;
    } 
    

    第二题 输油管道问题

    不知道为什么数学方法日常不对

    AC:

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int main(){
    	int t,a[10002],i,x;
    	scanf("%d",&t);
    	int dis=0;
    	for(i=0;i<t;i++)
    		scanf("%d%d",&x,&a[i]);
    	sort(a,a+t);
    	t--;
    	for(i=0;i<t;i++)
    		dis+=a[t--]-a[i];
    	printf("%d
    ",dis);
    	return 0;
    }
    

    第三题 开关

    这题需要一些思维,从第一排开始算,以此类推

    #include <iostream>
    #include <cstdio>
    using namespace std;
    #define INF 0x3fffff
    char k[5][5]; int a[5][5];
    int vx[5] = {-1, 0, 1, 0, 0}, vy[5] = {0, 1, 0, -1, 0};
    void click(int c, int t) {
        for(int i = 0; i < 5; ++i)
            if(c + vx[i] >= 0 && t + vy[i] >= 0 && c + vx[i] < 5 && t + vy[i] < 5){
                a[c + vx[i]][t + vy[i]] ^= 1;
           }
    
    }
    int main() {
        int T; 
        scanf("%d", &T);
        while(T--) {
            for(int i = 0; i < 5; ++i)
                for(int j = 0; j < 5; ++j)
                    cin>>k[i][j];
            for(int i = 0; i < 5; ++i)
                for(int j = 0; j < 5; ++j)
                    a[i][j] = (int)(k[i][j] - '0');
            int ans = INF, cnt = 0, flag = 0;
            for(int i = 0; i < 32; ++i) {
                flag = 0; cnt = 0;
                for(int j = 0; j < 5; ++j)
                    if((i >> j) & 1) ++cnt, click(0, j);
                for(int j = 0; j < 4; ++j) {
                    for(int k = 0; k < 5; ++k) {
                        if(!a[j][k]) ++cnt, click(j + 1, k);
                    }
    
                }
                for(int i = 0; i < 5; ++i)
                    for(int j = 0; j < 5; ++j)
                        if(!a[i][j]) {flag = 1; break;}
                if(!flag) ans = min(ans, cnt);
                for(int i = 0; i < 5; ++i)
                    for(int j = 0; j < 5; ++j)
                        a[i][j] = k[i][j] - '0';
            }
            if(ans == INF || ans > 6) printf("%d
    ", -1);
            else printf("%d
    ", ans);
        }
    
    }
    

    第四题 最长公共上升子序列

    分析清楚两个之间的关系,然后dp求解

    #include<cstdio>
    #include<iostream>
    using namespace std;
    #define N 3005
    int a[N],b[N],f[N],g[N],l,k;
    int main(){
        scanf("%d",&l);
        for(int i=1;i<=l;i++) scanf("%d",&a[i]);
        for(int i=1;i<=l;i++) scanf("%d",&b[i]);
        for(int i=1;i<=l;i++){
            k=0;
            for(int j=1;j<=l;j++){
                if(a[i]==b[j])
                    if(f[k]+1>f[j]){
                        f[j]=f[k]+1;g[j]=k;
                    }
                if(a[i]>b[j]) if(f[k]<f[j]) k=j;
            }
        }
        k=0;
        for(int i=1;i<=l;i++) if(f[k]<f[i]) k=i;
        printf("%d
    ",f[k]);
        return 0;
    }
    

    一二题以后务必调好,因为可能有好多好多问题,像第二题真的就只过了个样例....

  • 相关阅读:
    LNMP架构三
    LNMP架构二
    LNMP架构
    LAMP架构三
    LAMP架构二
    LAMP架构
    rsync工具介绍
    mysqldump备份单表数据
    阿铭每日一题 day 14 20180125
    阿铭每日一题 day 13 20180124
  • 原文地址:https://www.cnblogs.com/LSWorld/p/712test.html
Copyright © 2020-2023  润新知