首页 > 编程语言 >河南省第十五届ICPC大学生程序设计竞赛 F

河南省第十五届ICPC大学生程序设计竞赛 F

时间:2024-09-19 20:56:10浏览次数:8  
标签:const int sum pri long ICPC 程序设计 define 第十五届

题目链接

题目描述

给你一个正整数 M M M 请你求出一个最小的正整数 N N N 满足 N 的阶层是 M 的倍速 N的阶层是M的倍速 N的阶层是M的倍速

由于M实在是太大了,为了方便你读入,善良的出题人给你K个整数e1,e2,e3…ek

e i ei ei的 i i i代表着第 i i i个素数,ei代表着ei个第i个素数相乘

比如e1为3,第1个素数是2,那么e1为M的贡献就是乘上 2 ∗ 2 ∗ 2 2*2*2 2∗2∗2

先考虑一个数怎么样才能整除另一个数(是另一个数的倍数)

一个数x拆分成若干个素数相乘,如果每个素数的数量都比另一个数y多,那么x就是y的倍数

这里给你的M就是写成若干个素数相乘的形式

然后很显然这个题有单调性,因为是连乘,如果N!能够整除M,那么(N+1)!也能

既然答案满足单调性,那我们就二分答案

那么check函数怎么写呢,对于一个数x!拆分之后含有多少个y,很显然有
x / y + x / ( y ∗ y ) + x / ( y ∗ y ∗ y ) . . . . . . . x/y+x/(y*y)+x/(y*y*y)....... x/y+x/(y∗y)+x/(y∗y∗y).......

为了防止爆 l o n g long long l o n g long long我们除就可以了

#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
//#define int long long
const int INF = 4e18+5;
#define F(i,l,r) for(int i=l;i<=r;i++)
#define R(i,l,r) for(int i=r;i>=l;i--)
#define vv vector
#define fi first
#define se second
#define pii pair<int,int>
typedef long long ll;
const int mod = 998244353; 
//const int mod = 1e9+7; 
const int M = 1e7+5;
int b[N],dp[50][N],vis[N],pri[N]; 
ll a[N];
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
int n,m,k,ans,x,y,n0,n2,m0,m2,op;
//map<int,int>mp;
map<int,int>mmap;
char mp[1005][1005];
vector<int>v[10];
int lowbit(int x) {
	return x&-x;
}
char xx[N];
bool temp;
int kuai(int x,int y){
	int sum=1;
	x%=mod;
	while(y){
		if(y%2){
			y--;
			sum*=x;
			sum%=mod;
		  }
	  x*=x;
	  y/=2;
	  x%=mod;
	}
	return sum;
}
void init(){
	op=0;
	F(i,2,10000){
		if(!vis[i]){
			pri[++op]=i;
			vis[i]=1;
		}
		for(int j=1;i*pri[j]<=10000;j++){
			vis[i*pri[j]]=1;
			if(i%pri[j]==0) break;
		}
	}
}
struct node{
	int sum,l,r,add;
}tree[N];
bool check(int x){
	F(i,1,n){
		int sum=0;
		y=pri[i];
		while(y<=x){
			sum+=x/y;
			y*=pri[i];
		}
		if(sum<a[i]) return false;
	}
	return true;
}
void solve()
{
	cin>>n;
	F(i,1,n) cin>>a[i];
	int l=0,r=1e9+8;
	while(l<r){
		int mid=l+r>>1;
		if(check(mid)) r=mid;
		else l=mid+1;
	}
	cout<<r<<endl;
}
signed main() 
{
	ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0); // cin.tie(nullptr);
    int T = 1;                                                                                                                                                                                                                                                                    
    cin >> T;
    init(); 
    for (int i = 1; i <= T; i++)
    {
        solve();
    }
    return 0;
}

标签:const,int,sum,pri,long,ICPC,程序设计,define,第十五届
From: https://blog.csdn.net/qq_74355721/article/details/142369362

相关文章

  • C语言程序设计(进阶)
    肆意张扬的我们都不会是烂尾的诗集。2.整型在内存中的存储我们之前讲过一个变量的创建是要在内存中开辟空间的。空间的大小是根据不同类型而决定的。2.1原码、反码、补码数值有不同的表现形式:2进制、8进制、10进制、16进制其中整数的2进制表示也有三种形式:原码、反码、......
  • C语言程序设计(进阶)
    行到水穷处,坐看云起时。中秋快乐呀!数据在内存中的存储1.数据类型的介绍(1)基本的内置类型:·char       //字符数据类型·short     //短整型·int        //整型·long       //长整型·longlong  //更长的整......
  • Java语言程序设计基础篇_编程练习题**18.31 (替换单词)
    目录题目:**18.31(替换单词)习题思路代码示例 运行结果替换前替换后题目:**18.31(替换单词) 编写一个程序,递归地用一个新单词替换某个目录下的所有文件中出现的某个单词。从命令行如下传递参数:javaExercise18_31dirNameoldWordnewWord习题思路(读取路径方......
  • The 2024 ICPC Asia East Continent Online Contest (I)——F. Make Max
    https://qoj.ac/contest/1794/problem/9313#include<bits/stdc++.h>#definexfirst#defineysecondusingnamespacestd;typedeflonglongll;typedefpair<ll,ll>pii;constintN=2e5+10,mod=1e9+7;lln,m,q;inta[N],stk[N],tt;intl[N],r[N];......
  • 面向对象程序设计的了解
    面向对象程序设计(Object-OrientedProgramming,简称OOP)是一种编程范式,它使用对象和类来设计软件。以下是对面向对象程序设计的基本了解:核心概念对象(Object):对象是面向对象程序设计的基本单位,它是一个包含数据和行为的软件构件。对象是现实世界中事物的抽象表示。类(Class):......
  • ICPC2021 沈阳站 M String Problem 题解 | 十种做法一网打尽 , 一道题带你回顾字符串科
    题目传送门题意给定一个字符串,求每个前缀的字典最大序子串。注意到:对于每个前缀$s_{[1,i]}$,字典序最大子串的右边界一定是\(i\)。随着着\(i\)的增大,字典序最大子串的左边界一定是单调不减的。解法不分先后。后缀数组SASA&SAM后缀数组&后缀自动机SA对所有......
  • The 2024 ICPC Asia East Continent Online Contest (I)
    目录写在前面M签到F笛卡尔树or单调栈,dfsorST表,排序A大力讨论,结论G二分答案,前缀和C结论,图论,剩余系,线性代数L图论转化,建图技巧,最短路H括号序列,网络流写在最后写在前面补题地址:https://codeforces.com/contest/2005。以下按个人难度向排序。复刻CCPC网赛开头超顺利......
  • The 2022 ICPC Asia Xian Regional Contest
    目录写在前面F签到J签到C贪心,模拟G字符串,哈希L贪心,结论E数学,模拟B结论,网络流ALCTor根号预处理or线段树分治维护连通性D倍增,DP写在最后写在前面比赛地址:https://codeforces.com/gym/104077。以下按个人向难度排序。vp8题900+罚时差100罚时金。唉唉现在题数......
  • Java语言程序设计基础篇_编程练习题*18.28 (非递归目录大小)
    目录题目:*18.28(非递归目录大小)习题思路代码示例输出结果题目:*18.28(非递归目录大小)不使用递归改写程序清单18-7习题思路(getSize方法)创建一个变量表示总共的大小。传入路径,创建File文件。创建ArrayList<File>列表,并添加传入的文件。如果列表不为空,则进......
  • 2017 ACM/ICPC Asia Regional Qingdao Online(SDKD 2024 Summer Training Contest J2)
    C-TheDominatorofStrings题意给定n个串,问是否有一个串包含其他所有串,有就输出这个串。思路如果有解,答案必定是最长串,一一比较即可。(没想到.find()就能过......