zoukankan      html  css  js  c++  java
  • 7.14测试

    这次题目比较简单,所以大家分都特别高...

    第一题 对刚(拿到题笑了半天)其实就是个出题人皮了一下的约瑟夫问题

    100分:

    #include<iostream>
    #include<cstdio>
    #define tcl(a,b,c) for(a=b;a<=c;a++) 
    using namespace std;
    int main()
    {
        int m,n,i;
        int j,k=1,p=0,a[100001];
        scanf("%d%d",&n,&m);
        j=n;
        tcl(i,1,n)	a[i]=i+1;
        a[n]=1;
        while(p<n)
        {
            
            while(k<m)
            {
                j=a[j]; 
                k++;		
    		}
                p++;
                a[j]=a[a[j]];  
            k=1; 
        }
        printf("%d",a[j]);
    	return 0;			
    } 
    
    

    第二题 角谷问题 模拟而已

    100分:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	do
    	{
    		if(n%2==0)
    		{
    			int t;
    			t=n/2;
    			printf("%d/2=%d
    ",n,t);
    			n/=2;
    		}
    		else
    		{
    			int tt;
    			tt=3*n+1;
    			printf("%d*3+1=%d
    ",n,tt);
    			n=n*3+1;
    		} 
    	}while(n!=1);
    	return 0;
    } 
    

    第三题 整数合并

    这道题用到并查集,但是只过了8个点,还有两个点T了,把质数筛选一次全套在里面果然复杂度太高了。

    80分:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    #define tcl(a,b,c) for(a=b;a<=c;a++)
    int f[100001];
    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 gcd(int x,int y)
    {
        int r;
        r=x%y;
        while (r!=0)
        {
          x=y; y=r;
          r=x%y;
        } 
        return y;
    }
    int get(int x)
    {
        if(f[x]==x)
             return x;
        else 
        {
            f[x]=get(f[x]);
            return f[x];
        }
    }
    void join(int a,int b)
    {
        int t1,t2;
        t1=get(a);
        t2=get(b);
        if(t1!=t2)
            f[t2]=t1;
        return;
    }
    bool find(int a,int b)
    {
    	int t1,t2;
    	t1=get(a);
    	t2=get(b);
    	if(t1==t2) return true;
    	else return false;
    } 
    int main()
    {
        int n,m,p,i,j; 
        scanf("%d%d%d",&n,&m,&p);
        tcl(i,n,m) 
    	{
    		f[i]=i;
    	}
        tcl(i,n,m)
        {
        	tcl(j,n,m)
        	{
        		if(gcd(i,j)>=p&&(prime(gcd(i,j)))&&(!find(i,j)))
        			join(i,j);
        	}
        }
        int sum=0;
        tcl(i,n,m)
        {
        	if(f[i]==i) sum++;
        }
        printf("%d",sum);
        return 0;
    }
    

    第四题 金字塔 区间dp 考试的时候没想出来

  • 相关阅读:
    POJ 2337 【欧拉路径<包含输出>】.cpp
    Hlg 【表达式求值+欧拉路径】.cpp
    Hlg 1563 亲合数.cpp memset
    Hlg 1619 只有矩形.cpp【并查集】
    用unison来同步你的远程文件夹 Fwolf's Blog
    调试intellij IDEA hbase开发环境
    Bash: parsing arguments with ‘getopts’ | rsalveti's random thoughts
    十天内提高单词量到20000! (Vocabulary 10000)
    Unison File Synchronizer User Manual and Reference Guide
    Import errors in djangocms
  • 原文地址:https://www.cnblogs.com/LSWorld/p/714test.html
Copyright © 2011-2022 走看看