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

newcoder 周赛143 C 费马小定理和质因数分解相关优化

zhe ta ma shi C ti gai you de yang zi ma

费马小定理

image
image

代码及其注释

https://ac.nowcoder.com/acm/contest/134529/C

#include<bits/stdc++.h>
using namespace std;
//"O campeão tem nome, e se chama Charles Oliveira!"
#define int long long
#define endl '\n'
#define ep emplace
#define pob 
#define ll long long
#define pb push_back
#define pof pop_front
#define pob pop_back
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define mod 998244353
#define MOD 1000000007
const int N=200005;using ld = long double;
using ui = unsigned;
using ull = unsigned long long;
using i128 = __int128;
/*** 思路大概就是给一个X和Y,要求得是这两个数字相乘得结果得质因数A A^A的和* 比如假设X*Y=20的结果就是1*1+2*2+4*4+......20*20* 如果硬算的话,因为X和Y的数据范围都是1e9+7,把两个乘起来用根号来求质因数还是会T* * 可以知道假设 x*y=A1^x1+A2^x2+A3^x3.......,那么x*y的所有可以约的数就是A1^y+A2^y1+A3^y3......* 这里的y可以是0次,一次,2次.....fac[A1]* 这里的y1可以是0次,一次,2次......fac[A2]* * 如果都是0次,那么就是1了,一个也不选那么就是1,1也正好是范围内的数字*/
int fastpower(int base,int exp){int res=1;base%=MOD;while(exp){if(exp&1)res=(res*base)%MOD;base=(base*base)%MOD;exp>>=1;}return res;
}
map<int,int>fac;
void factors(int x){for(int i=2;i*i<=x;i++){while(x%i==0){fac[i]++;x/=i;}}if(x>1)fac[x]++;//注意这里没有包含1!//因为下面dfs就是从1开始的,只要一路dfs下去一个都不选,就是ans+=1;
}
vector<pair<int,int>>v;
int total_ans=0;
void dfs(int idx,int d){if(idx==v.size()){if(d%MOD==0)return ;//费马小定理else total_ans=(total_ans+fastpower(d%MOD,d%(MOD-1)))%MOD;return ;}int cnt=v[idx].second;int poww=1;//这个for loop从0开始就是考虑到了可以一个都不选,也就是选一个到选cnt个加上1个什么都不选for(int i=0;i<=cnt;i++){dfs(idx+1,d*poww);if(i<cnt)poww*=v[idx].first;//这里不可以写成poww=(poww*v[idx].first)%MOD;//原因就是这样传入就变成了fastpower(d%mod%mod,d%mod%(mod-1))!=fastpower(d%mod,d%(mod-1));}
}
void solve(){int x,y;cin>>x>>y;factors(x);factors(y);for(auto &[x,y]:fac){v.push_back({x,y});}dfs(0,1);cout<<total_ans<<endl;
}signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int t=1;//cin>>t;while(t--)solve();
}
http://www.jsqmd.com/news/804546/

相关文章:

  • 厚街健身房哪家值得推荐:秒杀健身房标杆 - 17329971652
  • 别再只读卡号了!用STM32+RC522深入玩转M1卡:读写数据块、值块操作实战
  • 厚街商务会所哪家值得推荐:秒杀商务会所 首选 - 17322238651
  • 从零构建GPTs应用商店:基于向量搜索的AI助手聚合平台实战
  • 西电b测场景下如何快速接入多模型api服务
  • Dante Cloud v4.0.6.0 版本发布:开源部分企业版功能,多方面更新升级
  • 告别‘纸片人’:在Unity URP里给角色注入灵魂——皮肤透光、发丝细节与眼神光的调校指南
  • 厚街花店哪家值得推荐:秒杀花店出众 - 13425704091
  • JPlag代码抄袭检测:17种编程语言的智能原创守护者
  • 淘金币自动化脚本:如何用3分钟完成25分钟的手动任务,实现时间资产增值
  • qmcdump深度解析:从QQ音乐加密格式到开源解码方案的完整技术实现
  • 全球半导体投资格局解析:东亚主导、供应链重塑与产业周期挑战
  • 厂家直供优势凸显!广州聚杰芯科交通量调查系统,价格更具竞争力 - 品牌速递
  • FcDesigner新版本发布:AI表单助理升级,多方面功能增强!
  • 从瑞典Silex收购案看中国MEMS产业技术获取与本土化战略
  • 图片水印去除技巧,亲测好用工具,一键擦除干净不留痕迹 - 爱上科技热点
  • 信息学奥赛刷题必备:最长平台问题三种解法详解(附C++代码)
  • [特殊字符][特殊字符][特殊字符]Arduino实战手册 从入门到精通
  • PandoraHelper:基于Pandora-Next的AI账号安全共享与精细化管理平台
  • WebPlotDigitizer终极指南:5步快速掌握科研图表数据提取技巧
  • 厚街宠物美容哪家值得推荐:秒杀宠物美容优选 - 17329971652
  • 传统认为听从长辈经验少走弯路,编程统计传统经验与现代市场数据,老旧经验多,不符合当下社会发展规律。
  • 十年收入中位数:经济排名新视角
  • 2026品牌推荐|广州聚杰芯科交调系统,稳居行业前列,适配公路网监测 - 品牌速递
  • 从SPI模式0到Quad I/O:手把手带你玩转W25Q128JV的性能压榨与接口升级
  • 将Hermes Agent工具链无缝对接至Taotoken多模型平台
  • 四川盛世钢联成都钢管销售频道 -无缝钢管|焊管|镀锌管|螺旋管|镀锌方矩管|高强度钢管 - 四川盛世钢联营销中心
  • GPT-Image-2提示词库实战指南:从原理到应用的高效AI绘画
  • 厚街美容院哪家值得推荐:秒杀美容院首选 - 19120507004
  • AI视觉逼近生物智能的瓶颈:从数据、架构到评估体系的深层解析