首页 > 其他分享 >AT_abc296_d

AT_abc296_d

时间:2024-01-24 14:49:03浏览次数:33  
标签:10 ch int long read le abc296

题目大意

现在有两个数 \(n\) 和 \(m\),请问你是否可以构造出一个数 \(x\),使得 \(m\le x\),并且让 \(x=a\times b\left(1\le a,b\le n\right)\)。

思路

我们可以枚举数 \(a\),判断是否可以使得 \(a\times b=x\)。但是我们可以发现,这样是错误的,因为 \(1\le n,m\le 10^{12}\),并且答案也会错误,我们考虑每次让枚举的 \(a\le b\),不让其重复即可。

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){
   int s=0,w=1;
   char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')w=-1;ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        s=s*10+ch-'0';
        ch=getchar();
    }
    return s*w;
}
inline void write(int x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9)write(x/10);
    putchar(x % 10 + '0');
}
int n,m;
signed main(){
	n=read(),m=read();
	if(ceil(sqrt(m))>n){
		puts("-1");
		return 0;
	}else{
		int ans=LONG_LONG_MAX;
		for(int i=1;i<=n;++i){
			int cnt=m/i;
			if(m%i!=0)cnt++;
			if(i>cnt)break;
			if(i*cnt>=m && cnt<=n){
				ans=min(ans,i*cnt);
			}
		}
		write(ans);
		puts("");
	}
	return 0;
}

标签:10,ch,int,long,read,le,abc296
From: https://www.cnblogs.com/shine0709/p/17984609

相关文章

  • ABC296D题解
    简单题。考虑-1的情况,即为\(n^2<m\)。剩下暴力枚举\(a\)即可。上限为\(\sqrt{m}+1\)。注意要\(+1\),因为上取整(本人赛时被这个罚了很多次)。可以由\(m\)和\(a\)确定\(b\)的最小值,即\(b=\lceil\frac{m}{a}\rceil\)。注意卡longlong以及\(a,b\)的最大值不能超......
  • [ABC296E] Transition Game
    题意:给定\(n\)个数,\(a_i\)为\(i\)的后继,有\(n\)轮游戏中,若第\(i\)轮游戏,对于\(1~n\)中任意一个后继次数\(j\),都能选择一个数\(x\)使得\(x\)后继\(j\)次之后都为\(i\),则称之赢一局,问赢的局数。首先可以肯定一个数的后继是唯一确定的,我们可以从任意\(1~n\)中的连向它的后继。考虑......
  • [ABC296Ex] Unite 题解
    考虑状压dp。设\(f_{i,j,s}\)表示当前正在决策坐标为\((i,j)\)的格子,且列状态为\(s\)。其中列状态维护了当前轮廓线上的连通块,我们可以使用最小表示法来简单维护。(为什么不用广义括号序列?因为其涉及到\(5\)个可选值,由于\(m\le7\),所以这两个都需要用到八进制,而最小表示......
  • 「题解」ABC296Ex Unite
    考虑一行一行往下dp,一个状态需要记录每个格子是否是黑色,对于黑色还有记录其并查集。爆搜跑一下本质不同状态数不是很多,dp就行了。\(m=7\)的时候状态数只有324.#include<cstdio>#include<vector>#include<queue>#include<cstring>#include<iostream>#include<algorithm>......
  • abc296-F
    题目链接:https://atcoder.jp/contests/abc296/tasks/abc296_f思维题,自己想的时候真没啥思路,看了很多题解才渐渐明白,也能大致证明正确性。前置知识:交换一个排列中的两个元素一次,会改变它的奇偶性。思路:1.当两个数组的数的数量都不相等时,肯定是不能使得他们相等的。2.当数组中......