首页 > 其他分享 >平方

平方

时间:2023-11-17 13:13:49浏览次数:25  
标签:平方 le int cnt st lst ch

平方

题意

给定 \(n\) 个数,然后让你拟定一个长度为 \(n\) 的数组 \(t\),使得 \(t_i>1\),且满足对于任意的 \(a_i\times a_{i+1}\times t_i\times t_{i+1}\) 为完全平方数,求 \(\min\prod t_i\)。

\(1\le n\le 10^5,1\le a_i\le 10^6\)。

考虑质因数之间是独立的关系,我们按照每种质因数在每个数中的奇偶性考虑。

性质:对于一个完全平方数,它的任意一个质因子都是偶数次幂。

我们考虑到对于某个质因子,每个数可能是偶数次幂,也可能是奇数次幂。

发现要么将所有偶数次幂的数变为奇数次幂,要么反过来。

每次修改必然只乘一个质因子,那么答案就乘 \(p^{\min}\),奇数次幂/偶数次中较少者为 \(\min\)。

#include<cstdio>
using namespace std;
#define Ed for(int i=h[x];~i;i=ne[i])
#define Ls(i,l,r) for(int i=l;i<r;++i)
#define Rs(i,l,r) for(int i=l;i>r;--i)
#define Le(i,l,r) for(int i=l;i<=r;++i)
#define Re(i,l,r) for(int i=l;i>=r;--i)
#define L(i,l) for(int i=0;i<l;++i)
#define E(i,l) for(int i=1;i<=l;++i)
#define W(t) while(t--)
#define Wh while
namespace fstIO{
    const char _fg='\n';
    int _len=0;
    char ibuf[(1<<20)+1],*iS,*iT,_out[(1<<25)+1],_ar[50];
    #define _gh()\
    (iS==iT?iT=(iS=ibuf)+fread(ibuf,1,(1<<20)+1,stdin),\
    (iS==iT?EOF:*iS++):*iS++)
    #define putc(ch) _out[_len++]=ch
    void read(){}
    template<typename Type,typename...Types>
    void read(Type&x,Types&...xs){
        x=0;
        char ch=_gh();
        char t=0;
        while(ch<'0'||ch>'9')t|=ch=='-',ch=_gh();
        while(ch>='0'&&ch<='9')x=x*10+(ch^48),ch=_gh();
        x=t?-x:x;
        read(xs...);
    }
    template<typename Type>
    void write(Type x){
        int tot=0;
        if(!x)putc('0');
        if(x<0)putc('-'),x=-x;
        while(x)_ar[++tot]=x%10+'0',x/=10;
        for(int i=tot;i;--i)putc(_ar[i]);
        putc(_fg);
    }
    void flush(){
        fwrite(_out,1,_len,stdout);
        _len=0;
    }
}
using namespace fstIO;
const int N=100010,M=10*N,mod=1000000007;
int n,p[N],tot,maxn,st[M],c[N];
typedef long long ll;
int min(int a,int b){
    return a<b?a:b;
}
int qpow(ll a,int b){
    ll res=1;
    Wh(b){
        if(b&1)res=res*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return res;
}
int main(){
    freopen("square.in","r",stdin);
    freopen("square.out","w",stdout);
    read(n);
    Ls(i, 2, M){
        if(!st[i])p[++tot]=i,st[i]=tot;
        for(int j=1;j<=tot&&p[j]*i<M;++j){
            st[p[j]*i]=j;
            if(i%p[j]==0)break;
        }
    }
    E(i, n){
        int x,lst=0,cnt=0;
        read(x);
        for(;x>1;x/=p[st[x]]){
            if(st[x]!=lst){
                c[lst]+=cnt&1;
                cnt=1;
                lst=st[x];
            }
            else++cnt;
        }
        c[lst]+=cnt&1;
    }
    int ans=1;
    E(i, tot)
        ans=1ll*ans*qpow(p[i],min(c[i],n-c[i]))%mod;
    printf("%d",ans);
    return 0;
}

标签:平方,le,int,cnt,st,lst,ch
From: https://www.cnblogs.com/wscqwq/p/17628392.html

相关文章

  • 10--977. 有序数组的平方
    给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]示例2:输入:nums=[-7,-3,2,3,11]......
  • 平方根倒数快速算法
    平方根是什么?给定一个x,我想算x^(1/2),就是在算平方根在计算机里最常见的算法是牛顿迭代法牛顿迭代法平方根倒数是什么?给定一个x,我想算x^-(1/2),就是在算平方根的倒数平时我们是如何计算的?如果在纸上写,就是一步一步的算,先算平方根(一般就是查表法),再求倒数;但是大部分的数是无......
  • 有效的完全平方数
    有效的完全平方数题目思路:classSolution{public:boolisPerfectSquare(intnum){if(0==num)returntrue;if(1==num)returntrue;intnum_copy=num;for(inti=1;i<num;i+=2){num_copy-=i;......
  • 计算一个数的平方根
    #include<stdio.h>#include<math.h> intmain(){   doublenum=25.0;   doublesquareRoot=sqrt(num);      printf("Thesquarerootof%fis%f\n",num,squareRoot);   return0;}......
  • 平方 & 立方 & 根号表
    平方&立方&根号表\(1\sim100\)平方表\(n\)\(n^2\)\(1\)\(1\)\(2\)\(4\)\(3\)\(9\)\(4\)\(16\)\(5\)\(25\)\(6\)\(36\)\(7\)\(49\)\(8\)\(64\)\(9\)\(81\)\(10\)\(100\)......
  • L5-367. 有效的完全平方数
     解决方法:加一个num=1的判断条件即可因为下标从0开始,当num=1时,left、right、mid的下标都是0,这样mid*mid=0,所以X=1时要单独考虑classSolution{publicbooleanisPerfectSquare(intnum){longleft=0,right=num-1;//官方题解......
  • L4: 69.x的平方根
    给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。注意:不允许使用任何内置指数函数和算符,例如 pow(x,0.5) 或者 x**0.5 。 示例1:输入:x=4输出:2示例2:输入:x=8输出:2解释:8的算术平方根......
  • 5G通信技术:具备百万连接/平方公里的设备连接能力
    5G是指第五代移动通信技术,是具有高速率、低时延和大连接特点的新一代宽带移动通信技术。5G通讯设施是实现人机物互联的网络基础设施。与4G相比,5G的速度更快,时延更短,连接能力更强。5G移动网络的速度通常会比4G更快。在某些情况下,5G的峰值速率可以达到10-20Gbit/s,以满足高清视频、虚......
  • 计算x的平方根
    publicclassSolution{publicintmySqrt(inta){if(a<2)returna;intstart=2;intend=a/2;intmid=0;while(start<=end){mid=start+(end-start)/2;longnum=(lo......
  • 平方数和立方数
    题目描述已知两个正整数a和b,求在a与b之间(包含a和b)的所有整数中平方数和立方数的个数。平方数指的是可以写成某个整数的平方,如4,16,25,81,…;立方数指的是可以写成某个整数的立方,如27,64,125,…输入格式多组数据(不超过100000组),每组数据2个整数a,b。(1≤a≤b≤1000000)。输出格式......