首页 > 其他分享 >D - Div Game -- ATCODER

D - Div Game -- ATCODER

时间:2022-10-26 20:55:18浏览次数:60  
标签:ATCODER -- 质数 counter long ++ Game https Div

D - Div Game

https://atcoder.jp/contests/abc169/tasks/abc169_d

参考: https://blog.csdn.net/justidle/article/details/106474626

 

思路

计算n中所有质数的幂,

  Note: 此处不需要使用筛法先求出所有的质数,然后计算其幂

i在[2, sqrt(n)]范围, 但是在质数判定完成后, 可以使用 n/=质数, 来动态减少[2, sqrt(n)]范围

此外质数的出现个数,使用map<ll, ll> counter数据结构来存储,

每个质数判定后,counter++;

对于幂,使用1,2,3,...x = (1+x)*x/2来计算最大的x,即x个满足要求的因子

 

Code

https://atcoder.jp/contests/abc169/submissions/35981643

 

long long n;
map<long long, long long> counter;

int main()
{
    cin >> n;
    
    for(long long i=2; i*i<=n; i++){
        while(n % i == 0){
            counter[i]++;
            n /= i;
        }
    }
    
    if (n > 1){
        counter[n]++;
    }

    long long sum = 0;

    map<long long, long long>::iterator it;
    for(it=counter.begin(); it!=counter.end(); it++){
        long long total = it->second;
        
        long long i;
        for(i=1; i*(i+1)/2<=total; i++);
        i--;
        
        sum += i;
    }

    cout << sum << endl;

    return 0;
}

 

标签:ATCODER,--,质数,counter,long,++,Game,https,Div
From: https://www.cnblogs.com/lightsong/p/16829991.html

相关文章

  • day20 闭包和promise
    闭包(Closure)概述:闭包就是函数嵌套函数,内部函数可以引用外部函数的变量和参数,并且不会被垃圾回收机制所回收.这种结构就称为闭包.函数的生命周期func......
  • 用函数模板实现对n个数进行由小到大排序
    #include<iostream>usingnamespacestd;//用模板实现两个数值交换template<classT>voidtswap(T*x,T*y){inttemp=*x;*x=*y;*y=temp;}//排序模板......
  • 第三方模块的下载和使用,requests模块,openpyxl模块
    第三方模块的下载和使用之前我们在刚学模块的时候说过模块有几个分类:1.内置模块2.自定义模块3.第三方模块今天我们就学习了第三方模块的下载与使用方法我们如果想要......
  • Python pip 安装与使用
    简介:​pip是Python包管理工具,该工具提供了对Python包的查找、下载、安装、卸载的功能。1.判断是否安装你可以通过以下命令来判断是否已安装:pip--version......
  • 你的网站需要维护或更新暂停一段时间
       网站运行突然出现这个页面,我以为是网站里面多了一个页面,点击错了,可是仔细一看我运行的就是产品内容页。然后就以为是vs出问题,把vs关掉又开启,还是这样。原来这是.......
  • 循环结构
    while *结构:   while(表达式)    {      循环体语句    }注意while后面不能加;  表达式可以是关系表达式也可以是逻辑我表达......
  • 面试(三)一点点沾边知识点
             ......
  • 用函数模板比较两个数的大小
    #include<iostream>usingnamespacestd;//用模板实现输出两个数当中最小的值template<classT>Ttmin(Tx,Ty){returnx<y?x:y;}voidmain(){inta=5,b......
  • Guid.NewGuid()
    System.Guid.NewGuid().ToString()全球唯一标识符(GUID)是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如Web浏览器和媒体播放器)中,都使用G......
  • 用函数模板实现两个数值交换
    #include<iostream>usingnamespacestd;//用模板实现两个数值交换template<classT>voidtswap(T*x,T*y){inttemp=*x;*x=*y;*y=temp;}voidmain()......