当前位置: 首页 > news >正文

2023 牛客国庆day4 【10.2训练补题】

 

目录

B-Basic Gcd Problem(素数筛+快速幂)

H-Harder Gcd Problem(素数)


 B-Basic Gcd Problem(素数筛+快速幂)

打表找规律发现答案为 (n质因子数目)^c 

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pi;
const int inf=1<<30;
const ll mod=1e9+7;
inline void read(ll &x){ll f=1;x=0;char ch=getchar();while(ch<'0'||'9'<ch){if(ch=='-')f=-1;ch=getchar();}while('0'<=ch&&ch<='9'){x=(x<<3)+(x<<1)+(ch&15);ch=getchar();}x*=f;
}
ll T,n,c;
int ct[N];
int su[N],cnt;
bool u[N];
void init(){memset(u,true,sizeof(u));cnt=0;for(int i=2;i<N;i++){if(u[i])su[++cnt]=i,ct[i]=1;for(int j=1;j<=cnt&&su[j]*i<N;j++){u[su[j]*i]=0;ct[su[j]*i]=ct[i]+1;//printf("ct[%d]%d\n",su[i]*j,ct[su[i]*j]);if(i%su[j]==0)break;}}
}
ll quickp(ll b,ll p){ll res=1;while(p){if(p&1)res=res*b%mod;p>>=1;b=b*b%mod;}return res;
}
int main(){init();read(T);while(T--){read(n);read(c);printf("%lld\n",quickp(c,ct[n]));}return 0;
} 

 

H-Harder Gcd Problem(素数)

参考题解:

【2020年牛客暑假第四场】H题 Harder Gcd Problem_2020牛客第四场 h题-CSDN博客

*所有数字都可由素数与其他数字相乘得到

*注意 v[ i ]标记时机

*偶数是素数2的倍数无需特判

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pi;
const int inf=1<<30;
const ll mod=1e9+7;
inline void read(int &x){int f=1;x=0;char ch=getchar();while(ch<'0'||'9'<ch){if(ch=='-')f=-1;ch=getchar();}while('0'<=ch&&ch<='9'){x=(x<<3)+(x<<1)+(ch&15);ch=getchar();}x*=f;
}
int T,n;
int v[N];int su[N],cnt;
bool u[N];
void init(){memset(u,true,sizeof(u));for(int i=2;i<N;i++){if(u[i])su[++cnt]=i;for(int j=1;j<=cnt&&su[j]*i<N;j++){u[su[j]*i]=0;if(i%su[j]==0)break;}}
}vector<pi>res;
vector<int>tmp;
int main(){read(T);init();while(T--){read(n);for(int i=2;i<=n;i++)v[i]=1;int ani;for(int i=1;su[i]*2<=n;i++)ani=i;for(int i=ani;i>0;i--){tmp.clear();for(int j=1;j*su[i]<=n;j++){int t=j*su[i];if(v[t]){tmp.push_back(t);}}int sz=tmp.size();if(sz&1){swap(tmp[1],tmp[sz-1]);}for(int j=0;j+1<sz;j+=2){res.push_back({tmp[j],tmp[j+1]});v[tmp[j]]=v[tmp[j+1]]=0;}}printf("%d\n",res.size());for(auto i:res)printf("%d %d\n",i.first,i.second);res.clear();}return 0;
}

http://www.lryc.cn/news/181356.html

相关文章:

  • android的USB开发时 mUsbManager.getDeviceList()获取都为空
  • SpringCloud Alibaba - Seata 部署 TC 服务,并集成微服务
  • Java基础面试,接口和抽象类的区别?
  • 《视觉 SLAM 十四讲》V2 第 4 讲 李群与李代数 【什么样的相机位姿 最符合 当前观测数据】
  • 【深蓝学院】手写VIO第4章--基于滑动窗口算法的 VIO 系统:可观性和 一致性--笔记
  • mfc 动态加载dll库,Mat转CImage,读ini配置文件,鼠标操作,在edit控件上画框,调试信息打印
  • 索尼 toio™应用创意开发征文|检测工业平台震动
  • 【已解决】 Expected linebreaks to be ‘LF‘ but found ‘CRLF‘.
  • Java8 Lambda.stream.sorted() 方法使用浅析分享
  • Neural Networks for Fingerprint Recognition
  • ChatGPT推出全新功能,引发人工智能合成声音担忧|百能云芯
  • Java 实现遍历一个文件夹,文件夹有100万数据,获取到修改时间在2天之内的数据
  • 持续集成部署-k8s-命令行工具:基础命令的使用
  • 使用python脚本的时间盲注完整步骤
  • C++项目:仿mudou库one thread one loop式并发服务器实现
  • 【算法训练-贪心算法 一】买卖股票的最佳时机II
  • 单阶段目标检测与双阶段目标检测的联系与区别
  • Mysql技术文档--设计表规范式-一次性扫盲
  • python socket 传输opencv读取的图像
  • APACHE NIFI学习之—UpdateAttribute
  • BIT-7文件操作和程序环境(16000字详解)
  • 冥想第九百二十八天
  • 深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(一)
  • Lucene-MergePolicy详解
  • 数据的加解密
  • 【Spring】更简单的读取和存储对象
  • 【LeetCode热题100】--108.将有序数组转换为二叉搜索树
  • Redis学习笔记(下):持久化RDB、AOF+主从复制(薪火相传,反客为主,一主多从,哨兵模式)+Redis集群
  • 【智能家居项目】裸机版本——设备子系统(LED Display 风扇)
  • [Linux]记录plasma-wayland下无法找到HDMI接口显示器的问题解决方案