博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客寒假算法基础集训营5 A:炫酷双截棍+G:炫酷数字(唯一分解定理+埃式筛法)+J:炫酷数学(快速幂)
阅读量:3898 次
发布时间:2019-05-23

本文共 1113 字,大约阅读时间需要 3 分钟。

【题A】

【题解】

易得,木棍能到达的点的距离原点的范围为[max(0,abs(l1-l2),l1+l2],分类讨论即可。

【代码】

#include
using namespace std;int main(){ int l1,l2,t; scanf("%d%d%d",&l1,&l2,&t); double l=abs(l1-l2),r=l1+l2; while(t--) { double x,y; scanf("%lf%lf",&x,&y); double d=sqrt(x*x+y*y); double ans; if(d
r) ans=d-r; else ans=0; printf("%.8lf\n",ans); } return 0;}

【题G】

【题解】

根据唯一分解定理,任意一个大于1的正整数都能表示成若干个质数的乘积,且表示的方法是唯一的。换句话说,一个数能被唯一地分解成质因数的乘积。

公式:n = P1^a1 * P2^a2 * …………* (P1 < P2 < ……Pn);

利用类似素数一般筛即埃式筛法来对因子数计数,取一个数i,并令i的倍数的因子数+1。

(对素数筛感兴趣的传送门这里:)

【代码】

#include
using namespace std;const int maxn=1e6+1;int ans[maxn],cnt[maxn]={0};int main(){ memset(ans,-1,sizeof(ans)); for(int i=1;i

【题J】

【题解】

易得,每一位只有在(0,0)(0,1)(1,0)的三种情况时满足条件,答案即为3^M。

【代码】

#include 
const int mod=998244353;typedef long long ll;ll quick_pow(ll a,ll b){ ll tmp=a; ll sum=1; while(b) { if(b&1) sum=sum*tmp%mod; tmp=tmp*tmp%mod; b>>=1; } return sum;}int main(){ int m; scanf("%d",&m); printf("%lld\n",quick_pow(3,m)); return 0;}

 

转载地址:http://ofben.baihongyu.com/

你可能感兴趣的文章
C++之数据库处理代理模块
查看>>
C++之编码实现ping的功能
查看>>
C++之动态配置ip信息
查看>>
生活之工资条(薪资结构参考)
查看>>
Makefile之通用模板
查看>>
Makefile之常用函数介绍
查看>>
Makefile之自动变量介绍
查看>>
C++之位测试练习的相关代码
查看>>
C++之IPC测试单元
查看>>
C++之测试snmp的注册模块
查看>>
WebKit之WebSocket的初步源码分析2
查看>>
WebKit之Canvas的源码初步分析1
查看>>
WebKit之Canvas源码分析2
查看>>
WebKit之CSSValue的继承关系
查看>>
WebKit之ScriptWrapper继承关系图
查看>>
Perl之默认变量
查看>>
Linux之ARM/Linux与单片机开发差异
查看>>
Linux之内存泄露的检测工具
查看>>
URL之开源项目的在线网址
查看>>
工具之OpenGrok的搭建方法
查看>>