首页 > 其他分享 >CF1285C【黄】-思路题

CF1285C【黄】-思路题

时间:2024-02-16 21:11:19浏览次数:30  
标签:return CF1285C long inline 思路 include X0 gcd

也是一道思路题,甚至没做对,看来今天脑子有点昏,明个再说

正确代码

#include <iostream>
using namespace std;
inline long long gcd(long long a,long long b){//最大公因数
	return b?gcd(b,a%b):a;
}
inline long long lcm(long long a,long long b){//最小公倍数
	return a/gcd(a,b)*b;//防止溢出
}
inline long long max(long long a,long long b){//求最大值
	return a>b?a:b;
}
long long x,a,b,q,maxx;
int main(void){
	cin>>x;
	for(long long i=1;i<=x/i;i++){//枚举
		if(x%i){//不是x因数就跳过
			continue;
		}
		if(lcm(i,x/i)==x){//满足条件的就取
			maxx=max(maxx,i);
		}
	}
	cout<<maxx<<" "<<x/maxx;//输出
}

错误且麻烦的代码(未考虑到从小到大选取质因数所成出来的因数并非全部因数,应该直接考虑全部因数,这样不仅正确而且简单)

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <stack>
#include <queue>
#include <map>
#include <unordered_map>
#include <cmath>
#define int long long
using namespace std;
long long X,X0;
unordered_map<int,int>b;
inline long long gcd(long long a,long long b){//最大公因数
	return b?gcd(b,a%b):a;
}
inline long long lcm(long long a,long long b){//最小公倍数
	return a/gcd(a,b)*b;//防止溢出
}
signed main()
{
	cin>>X;X0=X;
	while(1)
	{
		int f=0;
		for(int i=2;i<X;i++)
		{
			if(X%i==0)
			{
				if(b.find(i)==b.end())b[i]=0;
				b[i]++;
				X/=i;
				f=1;
				break;
			}
		}
		if(f==0)break;
	}
	if(b.find(X)==b.end())b[X]=0;
	b[X]++;
	if(X==X0)
	{
		cout<<1<<' '<<X0<<endl;
		return 0;
	}
	long long a=1,minmax=X0,ans1=-1,ans2=-1;
	for(int i=2;i<X0;i++)
	{
		if(b.find(i)!=b.end())
		{
			while(b[i]>0)
			{
				a*=i;
				b[i]--;
				if(lcm(a,X0/a)==X0)
				{
					if(minmax>max(a,X0/a))
					{
						minmax=max(a,X0/a);
						ans1=a,ans2=X0/a;
					}
				}
				if(a>minmax)break;
			}
			if(a>minmax)break;
		}
			
	}
	if(ans1!=-1) cout<<min(ans1,ans2)<<' '<<max(ans1,ans2)<<endl;
	else cout<<1<<' '<<X0<<endl;
	return 0;
}
/*524323425
  wrong9091 57675
  right19225 27273*/

标签:return,CF1285C,long,inline,思路,include,X0,gcd
From: https://www.cnblogs.com/gongkai/p/18017480

相关文章

  • 【C++】STL string类例题新思路记录(编写一个程序,告诉用户输入的句子包含多少个元音字
    题干:编写一个程序,告诉用户输入的句子包含多少个元音字母。 方案一:1、创建一个普通函数,依次传入5个元音字母对查找字符串进行检测。2、函数通过依次传入的单个元音字母,循环查找整个字符串最后返回统计值。1#include<string>2#include<iostream>3usingnamespace......
  • 软件测试学习笔记丨Web端测试——测试用例设计思路
    一、UI测试界面风格统一,与UI设计原型图一致界面文案正确提示、警告或错误说明描述准确切换窗口大小,将窗口缩小后,页面是否按比例缩小或出现滚动条,页面是否正确显示所有的图片是否都被正确装载在不同的浏览器、分辨率下图片是否能正确显示二、搜索测试如果支持模糊查询,搜索名称中......
  • 【转帖】解决Java/MySQL性能问题的思路
    plantegg.github.io/2023/08/28/解决问题思路/ 10年前写的,重新发一下系统性能问题CPU(基本上WEB服务器没有多少IO,主要是CPU有瓶颈)top/vmstat观察CPU使用率,Load负载,r/b线程数量等;IO(数据库大多数时候瓶颈是IO,主要是索引没建好;如果数据库CPU紧张的话,检查一下是不是orderb......
  • 阿里面试:设计一个大并发、大数据的系统架构,说说设计思路
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • C++ 避免不必要的复制进行优化的思路
    对于函数传入的参数,如果只是需要读取其中的值,一般来说,除了基础的int类型这种,建议声明为const&类型,这样避免不必要的复制操作。特殊的,std::vector进行增加元素时,可以考虑使用vec[0]=std::move(value),通过转移所有权来避免复制操作,因为vec[0]=value也存在复制操作。不......
  • AtCoder Beginner Contest 338 c题二分思路
    观察题目可知,会有一个最大的x(两个菜的最大制作数),大于这个x就不能做任何一盘菜,小于这个x那么一定可以做出来,这样分析就是显而易见的递归。实现递归的check函数,那么我们就可以把两个菜的总制作数传进去。那么什么时候true什么时候false呢,就是判断每种材料的制作量有没有超过原材料......
  • 整理思路
    题目描述将一个float类型的数,保留3位小数输出。前置芝士知识如何保留3位小数需要保留几位小数,就将precision(n)的括号里n换成几上面的语句写一次就够了,对之后的数字都有效函数precision()控制输出流的输出精度(精度控制采用四舍五入)注意:precision单独使用是控制有效......
  • 通达信【金钻天启2210】幅图选股公式 全新思路的超短线操作实战模式指标,成熟实战的思
    原公式某地售价1500元哦,完全加密,股海网和谐源码文件分享本指标一个幅图信号公式,一个选股公式全新思路的超短线操作实战模式指标,本指标是一款以低吸判断最近洗盘结束后,捕捉强势龙头信号介入点提示,自动过滤近期市场弱势股与不活跃股;成熟实战的思路策略设计,快速提升选股能力;贴近......
  • 浅谈主数据管理项目建设思路
    主数据是数据之源,是数据资产管理的核心,是信息系统互联互通的基石,是信息化和数字化的重要基础。——《主数据管理实践白皮书》 近期,国家印发《数字中国建设整体布局规划》,提出数字中国建设的整体框架,标志着数字经济被放到更重要的位置。而主数据管理作为数据治理的重要一环,科......
  • 删边最短路 思路
    例题LuoguP2685桥题意就是给一张存在重边和自环的图,求出使得删去一条边后最短路长度最长的方案数。(当然不能删掉割边,不然直接嗝屁了)分析首先考虑删哪条边,和最短路相关的边就只有在最短路上和不在最短路上的边。如果删掉的边不在最短路上,那么最短路长度不会变大,所以要删的边只......