首页 > 其他分享 >不是,哥们

不是,哥们

时间:2024-05-12 21:42:35浏览次数:19  
标签:哥们 int 不是 long ai 因子 vector 100010

题目链接

戳我

\(Solution\)

很容易发现对于每个\(ai^2\)的因子最多在5000以内,所以先将\(ai\)质因数分解然后求出\(ai^2\)的因子然后看每个因子出现了多少次加起来即可

\(Code\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;
int read(){
    int x=0,f=1;char c=getchar();
    while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
    while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();
    return f*x;
}
int a[100010],bj[1000010];
int vis[1000010],prime[1000010],tot;
void init(){
	int N=1e6;
	for(int i=2;i<=N;i++){
		if(!vis[i]) prime[++tot]=i;
		for(int j=1;j<=tot;j++){
			if(prime[j]*i>N) break;
			vis[i*prime[j]]=1;
			if(i%prime[j]==0) break;
		}
	}	
}
vector<int> f[100010];
vector<int> b[100010];
vector<int> e[100010];
void dfs(int x,int sum,int id){
	if(x==f[id].size()) return ;
	int p=1;
	for(int i=0;i<=b[id][x];i++){
		if(p!=1) e[id].push_back(sum*p);
		dfs(x+1,sum*p,id);
		p=p*f[id][x];
	}
}
signed main() {
	init();
	int n=read(),ans=0;
	for(int i=1;i<=n;i++) {
		a[i]=read();
		int x=a[i];
		for(int j=1;j<=tot;j++){
			if(x%prime[j]==0){
				f[i].push_back(prime[j]);
				int ans=0;
				while(x%prime[j]==0) x/=prime[j],ans++;
				b[i].push_back(ans*2);
			}
			if(x==1) break;
		}
		e[i].push_back(1);
		dfs(0,1,i);		
	}
	bj[a[n]]++;
	for(int i=n-1;i>=1;i--){
		for(int j=0;j<e[i].size();j++){
			if(e[i][j]>1000000) continue;
			ans+=bj[e[i][j]]; 
		} 
		bj[a[i]]++;
	}
	cout<<ans;
}

标签:哥们,int,不是,long,ai,因子,vector,100010
From: https://www.cnblogs.com/hbxblog/p/18188227

相关文章

  • 设置.md文件默认以typora打开而不是默认以vs code打开
    在Windows10/11中,你可以通过以下步骤来更改文件扩展名的默认打开程序:打开“设置”(可以通过开始菜单或使用Win+I快捷键)。点击“应用”选项。在左侧菜单中,点击“默认应用”。在右侧,找到“按文件类型指定默认应用”,并点击它。在下拉菜单中,找到“.md”,选择“Typora”。这将......
  • chinesecalendar:判断日期是不是工作日
    工作与学习中,有个场景需要判断指定日期是不是工作日,例如自动化办公工作日自动发邮件,量化交易判断是否为交易日等等,因此我们需要能准确判断给的日期是不是工作日,Python中一般使用模块chinesecalendar来解决这个问题。网友自己维护fromdatetimeimportdatetime#休:正常工作日......
  • 在MySQL中,如果你想要查询一个字段,当该字段的值为NULL时显示为0,而不是NULL
    在MySQL中,如果你想要查询一个字段,当该字段的值为NULL时显示为0,而不是NULL,可以使用COALESCE函数或者使用IFNULL函数(在MySQL8.0及更早版本中)。这两个函数都可以用来返回第一个非NULL表达式。以下是使用COALESCE函数的示例:SELECTCOALESCE(column_name,0)AScolumn_nameFROM......
  • chinesecalendar:判断日期是不是工作日
    工作与学习中,有个场景需要判断指定日期是不是工作日,例如自动化办公工作日自动发邮件,量化交易判断是否为交易日等等,因此我们需要能准确判断给的日期是不是工作日,Python中一般使用模块chinesecalendar来解决这个问题。网友自己维护fromdatetimeimportdatetime#休:正常工作日......
  • 是或不是
    #include<iostream>#include<Windows.h>usingnamespacestd;voidgr(){ MessageBox(NULL,"游戏结束","是或不是游戏",MB_OK);}intmain(intargc,char**argv){ inta=100; if(MessageBox(NULL,"想一个数字1-100","是或不是游戏&quo......
  • 是or不是游戏
    #include<bits/stdc++.h>#include<windows.h>intmain(intargc,char**argv){ inta=10; if(MessageBox(NULL,"你在心中想个数字,我来猜","是or不是游戏",MB_OK)==IDOK){ if(MessageBox(NULL,"是5及以内吗","是or不是游戏",MB_YESNO)=......
  • Java线程池核心线程用尽后为何优先排队而不是继续创建线程直至最大线程数?
    前阵子在v2ex上看到这篇帖子讨论这个问题,有意思的是这个如此基础的问题在Javaer的世界里并没有广泛的共识,下面的回答也是七嘴八舌的,刚好在《JavaPerformace》上看到对这个问题的解释,尝试总结一下。原因书中对线程池的解释基于以下几点前提:如果CPU已经跑满,增加线程并不能提高......
  • Chrome您的连接不是私密连接解决办法(转)
    原文:https://www.cnblogs.com/taoni/p/15860559.html您的连接不是私密连接攻击者可能会试图从x.x.x.x窃取您的信息(例如:密码、通讯内容或信用卡信息)。了解详情NET::ERR_CERT_INVALID将您访问的部分网页的网址、有限的系统信息以及部分网页内容发送给Google,以帮助我们提升Ch......
  • 为什么MySQL不是数据库类型
    MySQL实际上是一个关系型数据库管理系统(RDBMS),而不是一个数据库类型。这里的关键在于理解“数据库类型”和“数据库管理系统”之间的区别。数据库类型:通常指的是数据库模型或数据结构的分类,比如关系型数据库(如MySQL、Oracle、SQLServer等)和非关系型数据库(如MongoDB、Redis、C......
  • 问题:“git”不是内部命令
    问题:明明刚安装完git,在使用git命令时却显示不是内部命令因为没有配环境变量1、找到git安装目录,找到git里的bin路径,复制2、打开电脑里的计算机=》属性=》高级系统设置,我的是系统=》系统信息=》高级系统设置选择环境变量环境变量有两处需要改的,用户变量和系统变量,先改用户变......