HDU 6053 TrickGCD(枚举)

解锁微信小程序Camera组件的隐藏技能:连续扫码背后的逻辑与陷阱 本文深入解析微信小程序Camera组件在连续扫码功能中的技术原理与优化方案,涵盖识别率提升、内存管理策略及典型问题排查。通过实战参数对比和代码示例,帮助开发者解决扫码枪应用中的性能损耗与界面卡顿问题,提升零售、物流等场景的工作效率。 阅读详情

TrickGCD

Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 2855    Accepted Submission(s): 1075


Problem Description
You are given an array  A  , and Zhu wants to know there are how many different array  B  satisfy the following conditions?

*  1≤Bi≤Ai
* For each pair( l , r ) ( 1≤l≤r≤n ) ,  gcd(bl,bl+1...br)≥2
 

Input
The first line is an integer T( 1≤T≤10 ) describe the number of test cases.

Each test case begins with an integer number n describe the size of array  A .

Then a line contains  n  numbers describe each element of  A

You can assume that  1≤n,Ai≤105
 

Output
For the  k th test case , first output "Case #k: " , then output an integer as answer in a single line . because the answer may be large , so you are only need to output answer  mod   109+7
 

Sample Input
  
1 4 4 4 4 4
 

Sample Output
  
Case #1: 17
 

Source
 
题意:
给你a数列,求出gcd>=2的b数列数量,b[i]每个数都小于等于a[i]。
POINT:
枚举gcd,然后容斥。记录a[i]数组的数量,然后枚举。
比如枚举2,就看a[i]里有多少2和3。具体看代码。
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <map>
using namespace std;
#define LL long long
const int N = 1e5;
const LL p= 1e9+7;
LL pre[N+4],sum[N+4];
LL num[N+4];
LL qkm(LL base,LL mi)
{
    base%=p;
    LL ans=1;
    while(mi)
    {
        if(mi&1) ans=ans*base;
        base*=base;
        mi>>=1;
        base%=p;
        ans%=p;
    }
    return ans;
}
int main()
{
    int T;
    int k=0;
    scanf("%d",&T);
    while(T--)
    {
        memset(pre,0,sizeof pre);
        memset(num,0,sizeof num);
        memset(sum,0,sizeof sum);
        int n,o;
        scanf("%d",&n);
        int maxx=0;
        for(int i=1;i<=n;i++)
            scanf("%d",&o),pre[o]++,maxx=max(maxx,o);
        for(int i=1;i<=N;i++) sum[i]=sum[i-1]+pre[i];
        int flag=1;
        for(int i=2;i<=N;i++)
        {
            if(!flag) break;
            else
            {
                num[i]=1;
                for(int j=0;j<=maxx;j+=i)
                {
                    int a=j/i;
                    LL b=sum[min(j+i-1,N)]-sum[max(j-1,0)];
                    if(!a&&b)
                    {
                        num[i]=0;
                        flag=0;
                        break;
                    }
                    num[i]=(num[i]*qkm(a,b))%p;
                }
            }
        }
        for(int i=N;i>=2;i--)
        {
            for(int j=2*i;j<=N;j+=i)
            {
                num[i]-=num[j];
                num[i]=(num[i]+p)%p;
            }
        }
        LL ans=0;
        for(int i=2;i<=N;i++)
        {
            (ans+=num[i])%=p;
        }
        printf("Case #%d: %lld\n",++k,ans);
        
    }

    
}


从零构建:基于Docker与FRR的OSPF虚拟网络实验室 本文详细介绍了如何利用Docker与FRR构建OSPF虚拟网络实验室,从环境设计到高级网络拓扑配置,再到实验验证与排错。通过容器化技术实现高效资源利用和快速部署,特别适合网络协议教学、企业网络架构验证等场景。 阅读详情

相关推荐

(遇到问题)(已解决)word敲入的公式转化为mathtype

https://www.mathtype.cn/wenti/wordgongshi-zhuanhuan.html 现在越来越多的人在文档中编辑公式的时候会选择MathType来编辑,因为它包含有众多的数学符号和模板,编辑公式时非常方便。但是也有一些人在编辑公式时没有使用MathType公式编辑器,直接使用Word中自带的公式编辑器来编辑的。当我们需要要共享一份文件的时候,这种用自带公式编辑器编辑出来的文件,在我们安装有MathType公式编辑器的电脑里打开时,双击公式没有反应,是无法对它们进行修改的.

计算机视觉 1万+

2017 多校2 hdu 6053 TrickGCD

2017 多校2 hdu 6053 TrickGCD 题目: You are given an array \(A\) , and Zhu wants to know there are how many different array \(B\) satisfy the following conditions? \(1≤B_i≤A_i\) For each pair(\(l , r) (1≤...

weixin_33830216的博客 97

CST微波工作室端口设置保姆级教程:从波导端口到离散端口,手把手教你搞定S参数仿真

本文提供CST微波工作室端口设置的详细教程,涵盖波导端口和离散端口的选择与配置,助力工程师精准完成S参数仿真。通过微带线滤波器案例,详解端口尺寸、阻抗设置及常见问题排查,提升仿真效率与准确性。

weixin_42570296的博客 362

HDU 6053 TrickGCD 莫比乌斯反演||筛法

传送门:HDU6053 题意:给定一个序列Ai,构造一个序列Bi,满足Bi=2.  问有多少种Bi序列 正解:比赛的时候有点容斥的思路,但是感觉容斥太麻烦了,就换了题去搞,完全忘了莫比乌斯反演。。 显然我们要枚举gcd,然后对于每个gcd求所有(Ai/gcd)的乘积,最后再加起来,但是这个过程会有重复的, 需要容斥,用莫比乌斯函数即可,好像也有用类似于筛法一样的容斥也能过。

WA是一笔财富 793

DIKW模型实战:用Obsidian打造个人知识库的5个关键步骤

本文详细介绍了如何利用DIKW模型在Obsidian中构建高效个人知识库的5个关键步骤,从数据收集到智慧应用的全流程实践。通过标记系统、信息加工引擎和知识结晶方法,帮助知识工作者实现从原始数据到决策智慧的认知跃迁,提升个人知识管理效率。

gamma的博客 578

AURIX-TC3xx-GTM详解六-DPLL(Digital PLL Module)-寄存器1-DPLL寄存器

主要有下图这些寄存器2、

m0_69929716的博客 442

【筛法+容斥】HDU - 6053 - TrickGCD

题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=6053> 题意: 有一个长度为N的数组a,问数组b有多少种情况,满足 1<=N,a[i]<=1e5 题解: 第二个条件其实就是,如果所有数字的gcd都大于等于2,那部分的也肯定大于等于2。 假设,则。设为的方案数,则。这样我们就可以枚举来进行容斥的运算,而且我们...

Eliot的博客 233

HFSS与AI融合:智能算法如何重塑天线设计流程

本文探讨了HFSS与AI融合如何通过智能算法革新天线设计流程。在5G/6G通信时代,AI技术如机器学习和遗传算法显著提升了高频电磁场仿真效率,将传统设计周期从数周缩短至数小时,并优化了天线性能。文章详细介绍了AI与HFSS的集成策略、关键技术突破及典型应用案例,展示了智能算法在天线设计中的巨大潜力。

weixin_29035147的博客 781

hdu 6053 TrickGCD

给定一个序列 {An},要构造一个序列 {Bn},满足:1<=Bi<=Ai、gcd(B1,…,Bn)>=2,问方案数

iTom's blog 665

8.Python基础语法(五)续【光说不练假把式,上题】

Python基础语法(二) 有关于Python循环语句的几道实操,让大家理解知识点更深更透彻~

孤寒者的博客 2万+

使用Python与OpenCV实现基于霍夫变换的圆形缺陷检测与定位详细教程

本文详细探讨了如何使用Python和OpenCV库,通过图像边缘检测和霍夫变换实现圆形对象的检测与缺陷定位。我们不仅介绍了算法的基本原理,还通过具体的代码示例展示了如何在实际应用中实现这些技术。对于工业检测和医学影像分析,本文的方法提供了高效且易于实现的解决方案。随着图像处理技术的不断发展,未来我们可以期待更多新算法和新技术的应用,如深度学习与传统方法的结合,以及多传感器融合技术的引入,这将进一步提升缺陷检测与定位的效率和准确性。

qq_38334677的博客 1297

HDU 6053 TrickGCD (桶装+分段 / 莫比乌斯反演)

TrickGCD Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 746    Accepted Submission(s): 293 Problem Description You are given an

K键盘里的青春K 1284

从零开始跑通3DGS教程:(五)3DGS训练

本文介绍了在Docker环境中训练3DGS(3D Gaussian Splatting)的方法,属于《从零开始跑通3DGS教程》系列文章的第五部分。主要内容包括:Docker环境准备(基于pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime镜像)、容器内conda环境配置(安装必要依赖和3DGS相关组件)、以及训练命令执行步骤。文章提供了详细的命令行操作流程,帮助读者快速搭建3DGS训练环境。适合在Linux系统、Nvidia GPU环境下使用,完整教程可参考系列文章

诺有缸的高飞鸟的博客 1756

HDU6053 TrickGCD

链接:http://acm.hdu.edu.cn/showproblem.php?pid=6053 定义g(d)为gcd(i,j)%d==0的数量,对于一个位置a[x]有a[x]/d(向下取整)种,那么g(d)=∏(a[x]/d)\prod(a[x]/d)∏(a[x]/d),d的范围是[2,min(a)] 而最后的答案应该是g(2)+g(3)+0g(4)+g(5)-g(6)+g(7)+0g(8)+...

冰柠橙的博客 224

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HDU6053 TrickGCD(2017多校第2场)

TrickGCD Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1218    Accepted Submission(s): 464 Problem Description You are given an

Jelly_acm的博客 666

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hdu6053 TrickGCD 莫比乌斯函数 容斥原理

题意:给你一个a数组,要求找出b数组。b数组满足:1<=bi<=ai,gcd(b1,...,bn)>=2。求这样的b数组有多少个。 题解:gcd(b1,...,bn)=k,那么在k下b数组有a1/k*a2/k*...*an/k。根据容斥原理:ans=+(k=一个素数的积)-(k=两个素数的积)+(k=三个素数的积)-...,其实可以看出前面的系数就是莫比乌斯函数的相反数。但是枚举每个k,再遍历a数组计算答案,复杂度就是o(n^2)。可以在遍历a数组上想办法,设sum[m]表示1<=a[i]<=m的a[i]的

ACZone 403

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDU-6053 TrickGCD

TrickGCD Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 549    Accepted Submission(s): 211 Problem Description You are given an

樱花满地集于我心,楪舞纷飞祈愿相随 708

【HDU 6053 TrickGCD】 + 莫比乌斯反演

TrickGCDTime Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1002 Accepted Submission(s): 389Problem Description You are given an array A , an

楚江枫 543

hdu 6053 TrickGCD [莫比乌斯函数]

HDU 6053 TrickGCD [莫比乌斯函数]

ACTerminate的博客 2880

HDU6053 TrickGCD

题目连接题意​ 给定一个长为n的数组A,求解一定条件下能构造多少个不同数组B。条件为 1≤Bi≤Ai1\leq B_i \leq A_i 和 对于任意的 l,r(1≤l≤r≤n)l,r (1\leq l \leq r \leq n) ,gcd(Bl,Bl+1,...,Br)≥2gcd(B_l,B_{l+1},...,B_r) \geq 2.分析​ 显然gcd最小的情况必然是在l=1,r=nl

dDarkdawn的博客 434

HDU 6053 TrickGCD+6055 Regular polygon【2017多校联赛2】

HDU 6053 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6053 题意:给定a序列,求b序列的方案数,使其满足1、1≤Bi≤Ai                                                                                      2、( l , r ) (1≤l≤r

Jane_JXR的博客 451

2017多校训练赛第二场 HDU 6053 TrickGCD(容斥原理/莫比乌斯反演)

最后五分钟A了这题……惊天地泣鬼神啊……一波三折,真是刺激!         最初的想法,由于gcd是大于2的,然后gcd肯定只和质数有关,所以直接枚举,以每一个质数作为gcd,然后分别求出每个质数作为gcd的方案数加起来即可,然后对于每一位,用a[i]/gcd,就可以得到该位置的可选方案数,然后每位乘起来即可。可是事实并没有那么简单,很容易发现,计算完质数2、3的方案数后,所有6的倍数的方案都被重复计算了一次,类似的重复还有很多。怎么解决这个问题呢?

alpc_qleonardo 1135

HDU6053-TrickGCD

TrickGCD                                                                       Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)

wang_128的博客 636

hdu 6053 TrickGCD(莫比乌斯函数 或 ) *

link :http://acm.hdu.edu.cn/showproblem.php?pid=6053 TrickGCD Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 4951 Accepted Submission(s):...

nowting的博客 220

【数论】莫比乌斯反演证明+HDU6053(莫比乌斯函数)

预备知识: a|n表示a是n的一个因子a|n表示a是n的一个因子 μ(d)为莫比乌斯函数\mu(d)为莫比乌斯函数 若d=1d = 1,则μ(d)=1\mu(d) = 1; 若d=p1p2p3⋯pkd = p_1p_2 p_3 \cdots p_k,pip_i为互异素数,则有μ(d)=(−1)k\mu(d) = (-1)^k; 其他情况下μ(d)=0\mu(d) = 0;算法内容:已知:F(N)=

m674019130的博客 574

hdu 6053 TrickGCD 容斥原理(莫比乌斯工具)

You are given an array AA , and Zhu wants to know there are how many different array BB satisfy the following conditions?1≤Bi≤Ai1≤Bi≤Ai For each pair( l , r ) (1≤l≤r≤n1≤l≤r≤n) , gcd(bl,bl+1…br)≥2gcd(b

Hallelujah520的博客 536
上一篇: POJ 2402 Palindrome Numbers
下一篇: POJ 2155 Matrix(二维树状数组)
Mr_Treeeee
博客等级 码龄10年 38粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值