bzoj4807 車
题目大意:
Description
Input
Output
Sample Input
Sample Output
Solution
Code
/**************************************************************
Problem: 4807
User: 20011023
Language: C++
Result: Accepted
Time:1332 ms
Memory:17892 kb
****************************************************************/ #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=+;
const ll mod=1e10;
int n,m;
int k;
int exi[N];
int ans;
int yue[N],has[N],cnt;
int pri[N],tot;
bool vis[N];
void sieve(){
for(int i=;i<=n;i++){
if(!vis[i]){
pri[++tot]=i;
}
for(int j=;j<=tot;j++){
if(pri[j]*i>n) break;
vis[pri[j]*i]=;
if(i%pri[j]==) break;
}
}
}
void div1(int x){
for(int i=;pri[i]*pri[i]<=x;i++){
while(x%pri[i]==){
exi[i]++;
x/=pri[i];
}
}
if(x>){
int k=lower_bound(pri+,pri+tot+,x)-pri;
exi[k]++;
}
}
int div2(int x){
int now=x;
for(int i=;pri[i]*pri[i]<=x;i++){
if(now%pri[i]==){
while(now%pri[i]==){
if(exi[i]){
exi[i]--;
x/=pri[i];}
now/=pri[i];
}
}
}
if(now>){
int k=lower_bound(pri+,pri+tot+,now)-pri;
if(exi[k]){
exi[k]--;
x/=pri[k];
}
}
return x;
}
struct big{
ll a[];
int cnt;
void pre(){
cnt=,a[]=;
}
void mul(const ll &x){
int ji=;
for(int i=;i<=cnt;i++){
a[i]=a[i]*x+ji;
ji=a[i]/mod;
a[i]%=mod;
}
if(ji){
a[++cnt]=ji;
}
if(cnt>) cnt=;
}
void op(){
while(a[cnt]==&&cnt>) cnt--;
printf("%lld",a[cnt--]);
while(cnt)printf("%010lld",a[cnt--]);
}
}A;
void wrk(){
A.pre();
for(int i=m+;i<=n;i++){
int re=div2(i);
A.mul(re);
}
}
int main()
{
scanf("%d%d",&n,&m);
if(m>n) swap(n,m);
if(n==m){
printf("");return ;
}
else if(n==){
printf("%d",m);return ;
}
else if(m==){
printf("%d",n);return ;
}
sieve();
for(int i=;i<=n-m;i++){
div1(i);
}
wrk();
A.op();
return ;
}
Conclusion
质因数分解往往可以起到意想不到的优化,因为一个数的分解呈现了它的本质。
决定了一切的乘除,gcd,找因数等运算。
1.乘除,本质上是质因子次数的加减。
2.gcd本质上是所有质因子次数取min再相乘。lcm则取max
3.因数的产生本质上是一个乘法原理。质因子次数的选择也决定了因数的数值。
并且,处理一些gcd问题时,质因数分解的考虑方式也值得去尝试。
bzoj4807 車的更多相关文章
- BZOJ4807:車(组合数学,高精度)
Description 众所周知,車是中国象棋中最厉害的一子之一,它能吃到同一行或同一列中的其他棋子.車跟車显然不能在一起打起来,于是rly一天又借来了许多许多的車在棋盘上摆了起来……他想知道,在N× ...
- Python 基礎 - 元組與簡易購物車實做
tuple(元組) 其實跟列表差不多,也是存一組數,只不過是它一旦建立了,就不能修改了,只能做 切片 跟 查詢,所以只叫 只讀列表 語法: name = ("Rogers", &q ...
- CH6802 車的放置 和 CH6B24 Place the Robots
6802 車的放置 0x60「图论」例题 描述 给定一个N行M列的棋盘,已知某些格子禁止放置.问棋盘上最多能放多少个不能互相攻击的車.車放在格子里,攻击范围与中国象棋的"車"一致. ...
- AcWing P373 車的放置
Analysis 这道题是二分图匹配,设可以放車的的地方的坐标为(i,j),则连一条i到j的有向边(注意是有向边),然后再跑匈牙利算法就好了.时间复杂度是O(nm(n+m)),在1≤n,m≤200的情 ...
- 車(rook)
[题目分析] JustPenz:我们假设n>m(不大于就交换),那最多能摆m个,所以会有(n-m)个空白,我们把这些空白插入到n中,答案就是C(n,n-m)=C(n,m);数据范围比较大,我们就 ...
- GT sport真实赛道详解 - Brands Hatch | 伯蘭士赫治GP賽車場
参考:GT sport所有赛道简介 GT Sport - Tip/Guide For FASTER LAP TIMES (Brands Hatch) 赛道介绍.跑法.赛事网上都有大把的视频. GT s ...
- CH6802 車的放置
原题链接 和棋盘覆盖(题解)差不多. 将行和列看成\(n+m\)个节点,且分属两个集合,如果某个节点没有被禁止,则行坐标对应节点向列坐标对应节点连边,然后就是求二分图最大匹配了. #include&l ...
- [題解](最小生成樹/LCA)luogu_P1967貨車運輸
一道好題不出所料又抄的題解 1.首先對於這張圖肯定要考慮走哪些邊不走哪些邊,發現我們想要的肯定那些邊權最大的邊,所以想到最大生成樹 這樣能保證選到盡量大的邊 2.跑完最大生成樹后每兩點之間就有唯一路徑 ...
- 【2018.9.20】JOI 2017 Final T2「準急電車 / Semiexpress」
题目描述 JOI 铁路公司是 JOI 国唯一的铁路公司. 在某条铁路沿线共有 $N$ 座车站,依次编号为 $1...N$. 目前,正在服役的车次按照运行速度可分为两类:高速电车(简称快车)与普通电车( ...
随机推荐
- c# SSH ,SFTP
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Hadoop日记Day4---去除HADOOP_HOME is deprecated
去除hadoop运行时的警告 1. 档hadoop运行时,我们会看到如下图1.1所示的警告. 图 1.1 2. 虽然不影响程序运行,但是看到这样的警告信息总是觉得自己做得不够好.一步步分析,先看一下启 ...
- jenkis +sonarqube 对后端代码静态扫描,钉钉群通知执行结果(记录)
代码提交,触发后端sonar测试,测试完成,jenkins触发依赖任务,执行python脚本,达到预期,调用上线任务模块,进行上线,达不到预期,钉钉群通知. 牵涉到配置: 1.配置sonar测试任务 ...
- css小技巧::not()选择器的妙用
比如,要实现下面的效果(例如:一个列表的最后一项没有边框): See the Pen gmrGOV by 杨友存 (@Gavin-YYC) on CodePen. 一般的文档结构如下: <!-- ...
- Jmeter(九)_获取JDBC响应做接口关联
在之前的文章-参数关联中,留个一个小尾巴,这里补充一下 http://www.cnblogs.com/Zfc-Cjk/p/8295495.html 1:从sql表中将需要取的数据查出来 2:我们需要把 ...
- 激活IntelliJ IDEA到2100年
1.下载破解文件(破解版本2018.2,其他版本未尝试) http://idea.lanyus.com/jar/JetbrainsIdesCrack-4.2-release-sha1-3323d5d0 ...
- Python+opencv 图像拼接
1.http://www.cnblogs.com/skyfsm/p/7411961.html ,给出了很好地拼接算法实现 2.由于不是Python的,所以简单做了一些翻译转成Python+opencv ...
- 借助第八代智能英特尔® 酷睿™ i7 处理器和 Unreal Swarm* 的强大性能快速构建光照
<虚幻竞技场>.<Robo Recall>等游戏的成功与 Unreal Engine 如何处理照明密切相关.原因之一就是静态光映射,但是这需要付出一定的代价:构建照明需要时间, ...
- Linux内核分析作业 NO.5
拔掉系统调用的三层皮(下) 于佳心 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 ...
- 《Linux内核分析》第四周学习笔记
<Linux内核分析>第四周学习笔记 扒开系统调用的三层皮(上) 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.c ...