首页 > 其他分享 >[BZOJ4407]于神之怒加强版 CODE

[BZOJ4407]于神之怒加强版 CODE

时间:2023-05-18 16:01:00浏览次数:40  
标签:神之怒 CODE ll cnt dfs num ans BZOJ4407 mod

#include<bits/stdc++.h>
#define ll long long
#define For(i,a,b) for(ll i=(a);i<=(b);++i)
#define Rep(i,a,b) for(ll i=(a);i>=(b);--i)
const ll N=1e6+10;
using namespace std;
const ll mod=1e9+7;

ll vis[N],tot,p[N];
void init(ll n){//质数筛
    For(i,2,n){
        if(!vis[i])p[++tot]=i;
        For(j,1,tot){
            if(i*p[j]>n)break;
            vis[i*p[j]]=1;
            if(i%p[j]==0)break;
        }
    }
}

ll cnt,t[N],num[N];//t为质因数,num为出现的个数
void solve(ll x){//质因数分解
    for(ll i=1;p[i]*p[i]<=x;i++){
        if(x%p[i]==0){
            t[++cnt]=p[i];
            num[cnt]=0;
            while(x%p[i]==0)num[cnt]++,x/=p[i];
        }
    }
    if(x>1)t[++cnt]=x,num[cnt]=1;
}

ll a,b,ans;
void dfs(ll x,ll d,ll s){//第x个质因数,目前枚举的因数为d,f(d)=s
    if(x>cnt){//按公式计算答案
        ll t1=b/d,t2=(a+d-1)/d;
        ans=(ans+(t1+t2)*(t1-t2+1)*s%mod+mod)%mod;
        return;
    }
    dfs(x+1,d,s);//不选当前质因数
    s=s*(1-t[x]);//积性函数直接计算
    For(i,1,num[x]){//选i个当前质因数
        d*=t[x];
        dfs(x+1,d,s);
    }
}

void mian(){

    scanf("%lld%lld",&a,&b);
    cnt=ans=0;//记得清空
    solve(b);
    dfs(1,1,1);
    printf("%lld\n",ans*500000004%mod*b%mod);//500000004是2在模1000000007下的逆元

}

int main(){
    init(50000);
    int T=1;
    scanf("%d",&T);
    while(T--)mian();
    return 0;
}

标签:神之怒,CODE,ll,cnt,dfs,num,ans,BZOJ4407,mod
From: https://www.cnblogs.com/yvette1217/p/17412211.html

相关文章

  • AtCoder Beginner Contest 212 F Greedy Takahashi
    洛谷传送门AtCoder传送门考虑每条边,因为是静态的,所以可以预处理出\(f_{i,j},g_{i,j}\)表示从第\(i\)条边,往后跳\(2^j\)条边,跳到边的编号和目前的时间(如果不存在就当作跳到第\(0\)条边)。直接倍增处理即可。询问就是找到从\(u\)开始的出边,能跳尽量跳。注意一些细节......
  • NLP中的Autoencoder、Autoregressive、seq2seq模型区分
    自回归、自编码器、seq2seqAutoregressiveLM特点:自回归语言模型按照特定的顺序一次生成一个token。自回归模型是单向的语言模型,适合用于文本生成。训练方式:给定之前所有的token,预测下一个token是什么。代表模型:GPT。AutoencoderLM特点:自编码器语言模型通常用于denoisin......
  • Java字符串就是Unicode字符序列
    一、简介Java字符串就是Unicode字符序列。Java里没有内置的字符串类型,而是在标准的类库中提供了一个预定义类,String。每个用双引号""括起来的都是String类的一个实例。字符串是日常开发中最常用,Java字符串的一个重要特点就是字符串不可变二、字符串定义2.1直接定义字符串......
  • Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)
    参考:https://github.com/vulhub/vulhub/blob/master/weblogic/CVE-2017-10271/README.md反弹shellEXP:POST/wls-wsat/CoordinatorPortTypeHTTP/1.1Host:172.31.14.123:7001Accept-Encoding:gzip,deflateAccept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(com......
  • #yyds干货盘点# LeetCode程序员面试金典:相交链表
    1.简述:给你两个单链表的头节点 headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。自定义评测:评测系统的输入......
  • #yyds干货盘点# LeetCode程序员面试金典:从中序与后序遍历序列构造二叉树
    题目:给定两个整数数组inorder和postorder,其中inorder是二叉树的中序遍历,postorder是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例1:输入:inorder=[9,3,15,20,7],postorder=[9,15,7,20,3]输出:[3,9,20,null,null,15,7]示例2:输入:inorder=[-1],postorder......
  • Visual Studio Code 小白使用介绍
    前言现在使用Vscode编码的人越来越多,凭借着免费,开源,轻量,跨平台的特点收货了一大批忠实粉丝最近因项目需要开始使用Vscode,但不知为何,感觉有点力不从心,不知道该怎么用首先想到去官网看看,然后放弃了(英语渣渣表示压力山大,其实正因为英语差,才更应该锻炼一下的,大家不要学我23333)最后自己......
  • Codeforces Round 868 (Div. 2) A-D
    CodeforcesRound868(Div.2) A.A-characteristicintfac[N];map<int,int>mp;voidinit(){fac[1]=0;mp[0]=1;for(inti=2;i<N;i++){fac[i]=fac[i-1]+(i-1);mp[fac[i]]=i;}}voidsolve(){intn=read(),k=rea......
  • 动态规划算法基础及leetcode例题
    01基础理论题型:动规基础(斐波那契数列or爬楼梯);背包问题;打家劫舍;股票问题;子序列问题动规误区:只要看懂递推就ok(递推公式只是一部分)解决动态规划应该要思考的几步:状态转移的DP数组以及下标的含义递推公式DP数组为何初始化遍历顺序打印DP数组02例题基础题目509.斐波那......
  • 24、hashcode是什么?有什么作用?
    Java中Object有一个方法:publicnativeinthashcode();(1)hashcode()方法的作用hashcode()方法主要配合基于散列的集合一起使用,比如HashSet、HashMap、HashTable。当集合需要添加新的对象时,先调用这个对象的hashcode()方法,得到对应的hashcode值,实际上hashmap中会有一个table保存......