zoukankan      html  css  js  c++  java
  • Codeforces Round #613 (Div. 2)

    D. Dr. Evil Underscores

    题意

    寻找一个x,使得他与数组中数的异或的最大值最小

    分析

    分治位运算

    代码

    
    inline int read()
    {
        char c=getchar();int x=0,f=1;
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    vector<int >v;
    int dfs(int i,vector<int > &v)
    {
    	vector<int>v0,v1;
    	if(i<0)return 0;
    	for(auto j:v)
    	{
    		if((j>>i)&1)v1.push_back(j);//如果这一位是1 
    		else v0.push_back(j);//如果这一位是0 
    	}
    	if(v0.size()==0)return dfs(i-1,v1);//全是1
    	if(v1.size()==0)return dfs(i-1,v0);//全是0
    	return  min(dfs(i-1,v0),dfs(i-1,v1))+(1<<i);
    }
    main(void)
    {
    	int n=read();
    	_1for(i,n)
    	{
    		ll t=read();
    		v.push_back(t);
    	}
    	cout<<dfs(30,v)<<endl;
    }
    

    C

    题意

    给你一个整数X,求出最小公倍数是X的两个数a,b,并且要求a,b的二者较大值尽可能小。

    思路

    已知:最大公约数GCD(a,b)=p和最小公倍数LCM(a,b)=q的关系是:q=a*b/p ,即 LCM(a,b)=a * b / GCD(a,b) ——①;

    易知当 a∗b=X 时 max(a,b) 最小 ,且① 即 当GCD(a,b)=1 所以直接枚举答案判断。

    代码

    #include<bits/stdc++.h>
    #define int long long
    #define _0for(i, a) for(int i = 0; i < (a); ++i)
    #define _1for(i, a) for(int i = 1; i <=(a); ++i)
    using namespace std;
    int gcd(int p,int q)
    {
    	if(p==0)return q;
    	else
    	{
    		return gcd(q%p,p);
    	}
    }
    main(void)
    {
    
    	int a,b,x;
    	cin>>x;
    	for(int i=1;i*i<=x;i++)
    	{
    		if(x%i==0)
    		{
    			if(gcd(i,x/i)==1)
    			{
    				a=i;
    				b=x/i;
    			}
    		} 
    	}
    	printf("%lld %lld
    ",a,b);
    }
    
    
    
    
  • 相关阅读:
    MySQL(数据库)
    移动端兼容
    Vue常用指令
    JS浮点运算精度问题
    ES11新增的9个新特性
    后端要采用ArrayBuffer上传文件
    重磅来袭 Vue 3.0 One Piece 正式发布
    Vue 事件的高级使用方法
    浏览器的回流与重绘(Reflow&Repaint)
    微前端介绍
  • 原文地址:https://www.cnblogs.com/wangqianyv/p/13280717.html
Copyright © 2011-2022 走看看