hdu4407(容斥原理+分解质因数)Sum

578 篇文章 ¥299.90 ¥399.90
570 篇文章 ¥299.90 ¥399.90
这是一篇关于如何利用容斥原理和分解质因数解决HDU4407问题的博客。文章介绍了题目要求,即根据给定的操作修改数组元素,并计算区间内与特定数互质的数的个数。通过实例解析,阐述了解题思路和算法实现的关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意是第一行输入T,第二行输入n,m,一个数组a[i]=i,下面m行每行一个操作,输入1,x,p,则表示把a[i]修改为p,输入2,x,y,p,则表示询问[x,y]区间内和p互质的数的个数

//比起原来的那个求一个数在一个区间里与之互质的个数,用map映射后,每次的求解最多多1000次判断互质计算
//求和的时候两数相乘大于了int的范围,这个地方需要注意 
#include<cstdio>
#include<iostream>
#include<map>
#include<vector>
#define ll long long
using namespace std;
vector<int>  x;
map<int,int> Map;
int n,m;
void getprime(int n)
{
    //质因数分解,去掉相同的质因数
    x.clear();
    for(int i=2; i*i<=n; ++i)
    {
        if(n%i==0)
        {
            n/=i;
            x.push_back(i);
            while(n%i==0) n/=i;
        }
    }
    if(n!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值