★★★   输入文件:HanXin.in   输出文件:HanXin.out   简单对比

时间限制:1 s   内存限制:256 MB

【题目描述】

韩信是中国军事思想“谋战”派代表人物,被后人奉为“兵仙”、“战神”。“王侯将相”韩信一人全任。“国士无双”、“功高无二,略不世出”是楚汉之时人们对其的评价。作为统帅,他率军出陈仓、定三秦、擒魏、破代、灭赵、降燕、伐齐,直至垓下全歼楚军,无一败绩,天下莫敢与之相争。

相传,韩信带兵打仗时,从不直接清点军队人数。有一次,韩信带1500名兵士打仗,战死四五百人。站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信马上说出人数:1049。

这次,刘邦派韩信带兵N人攻打一座重兵驻扎的城市。城市占领了,可汉军也是伤亡惨重。韩信需要知道汉军至少损失了多少兵力,好向刘邦汇报。

已知韩信发出了M次命令,对于第i次命令,他选择一个素数Pi,要求士兵每Pi人站一排,此时最后一排剩下了ai人。你的任务是帮助韩信求出这种情况下汉军损失兵力的最小值。当然,由于士兵们都很疲惫,他们有可能站错队伍导致韩信得到的数据有误。

【输入格式】

第一行两个正整数N,M,分别代表最初的军队人数和韩信的询问次数。

接下来有M行,每行两个非负整数Pi,ai,代表韩信选择的素数和此时剩下的人数。

输入保证每个素数各不相同。

【输出格式】

输出一行,一个整数。

若有解,输出最小损失人数。若无解,输出-1.

【样例输入】

1500 3
3 2
5 4
7 6

【样例输出】

31

【数据范围】

对于30%的数据,1≤N≤1,000,000,1≤M≤4;

对于50%的数据,1≤N≤100,000,000,1≤M≤8;

对于100%的数据,1≤N≤1,000,000,000,000,1≤M≤10;保证所有素数的乘积≤1012,0≤ai<Pi.

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define N 20
#define LL long long using namespace std;
LL n,m,a[N],p[N],mod;void exgcd(LL a,LL b,LL &x,LL &y)
{if (!b) {x=1; y=0;return;}exgcd(b,a%b,x,y);LL t=y;y=x-(a/b)*y;x=t;
}LL china()
{LL ans=0;for (int i=1;i<=m;i++) {LL mi=mod/p[i];LL x,y;exgcd(mi,p[i],x,y);ans=(ans+mi*x*a[i])%mod;}return (ans%mod+mod)%mod;
}int main()
{   freopen("HanXin.in","r",stdin);freopen("HanXin.out","w",stdout); scanf("%lld%lld",&n,&m); mod=1;for (int i=1;i<=m;i++) scanf("%lld%lld",&p[i],&a[i]),mod*=p[i];//所有模数的乘积 LL ans=china();// cout<<ans<<endl;if (ans>n) {printf("-1\n");return 0;}LL t=(n-ans)/mod*mod;ans=n-ans-t; printf("%lld\n",(ans%mod+mod)%mod);return 0;
}

  

转载于:https://www.cnblogs.com/lyqlyq/p/7327617.html

1786. 韩信点兵相关推荐

  1. COGS——T 1786. 韩信点兵

    http://www.cogs.pro/cogs/problem/problem.php?pid=1786 ★★★   输入文件:HanXin.in   输出文件:HanXin.out   简单对比 ...

  2. 韩信点兵-中国剩余定理(练习)

    http://acm.nyist.net/JudgeOnline/problem.php?pid=34提交地址 韩信点兵-中国剩余定理. 题目能够用枚举非常easy的做出来,在这里写是为了运用一下刚刚 ...

  3. 一位同学想通过用计算机编程解决韩信点兵,高中信息技术《算法与程序设计模块》练习题...

    新课标高中信息技术<算法与程序设计模块>练习题 一.单选题(每题2分,共40分) 1.四川汶川地震过后,要对各个单位捐款救灾情况进行分组制表,并进行积分排序,一般使用的专业电子处理软件是( ...

  4. 4095: 韩信点兵

    4095: 韩信点兵 Description 韩信点兵.韩信在点兵的时候,为了知道有多少个兵,同时又能保住军事机密,便让士兵排队报数. (1)按从1到5报数,记下最后一个士兵报的数为a (2) 再按从 ...

  5. 实验4-1-5 韩信点兵 (10 分)

    实验4-1-5 韩信点兵 (10 分) 在中国数学史上,广泛流传着一个"韩信点兵"的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳.据说韩信的数学水 ...

  6. 韩信点兵--中国剩余定理

    传说西汉大将韩信,由于比较年轻,开始他的部下对他不很佩服.有一次阅兵时,韩信要求士兵分三路纵队,结果末尾多2人,改成五路纵队,结果末尾多3人,再改成七路纵队,结果又余下2人,后来下级军官向他报告共有士 ...

  7. 7-7 韩信点兵 (10 分)

    在中国数学史上,广泛流传着一个"韩信点兵"的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳.据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有 ...

  8. 韩信点兵-输出韩信至少拥有的士兵人数。

    在中国数学史上,广泛流传着一个"韩信点兵"的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳.据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有 ...

  9. 韩信点兵(Hanxin)(C++)

    一.题目: 韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队形,而他每次只瞟一眼队伍的排尾就知道总人数了.输入3个非负整数a,b,c表示每种队伍排尾的人数 ...

  10. 韩信点兵python程序_韩信点兵计算公式与代码

    韩信点兵计算公式与代码 问题描述: 淮安民间传说着一则故事--"韩信点兵",其次有成语"韩信点兵,多多益善". 韩信带1500名兵士打仗,战死四五百人,站3人一 ...

最新文章

  1. Caffe在Ubuntu 14.04 64bit 下的安装------pycaffe 配置
  2. 信息系统项目管理师复习第1小时
  3. POJ 2826 An Easy Problem?! 叉积求多边形面积 【计算几何】
  4. 使用 LLVM 实现一个简单编译器
  5. Google小组研发模式分析 1
  6. 好用的数学公式(持续更新中)
  7. Unity 内建数据索引
  8. linux虚拟化技术 教程,Linux上实现虚拟化技术的优势
  9. ESP8266-01/01S配对阿里云生活物联网教程(超详细)
  10. 计算机性能测评实验原理,实验一 计算机性能测试.pdf
  11. Windows 10聚焦怎么用?教你玩转Windows聚焦功能
  12. Linux ubuntu中编写shell脚本文件
  13. 软件开发方法 --- 结构化方法
  14. Go channel详解
  15. python语言应用 智慧树满分章节测试答案_Python语言应用完整智慧树网课章节测试答案...
  16. MySQL 5.6 (Win7 64位)下载、安装与配置图文教程
  17. 如何将EXCEL表格的内容导入到CDR中?
  18. nginx服务器报错502 bad gateway!
  19. Swift 基础 枚举详解(代码)
  20. yolov5模型的部署之TensorRT

热门文章

  1. 使用阿里云服务器上线项目(部署前后端)的实践过程
  2. SQL必知必会-基础篇[SQL学习笔记]
  3. (vulnhub靶机通关)Breach系列:breach-1.0
  4. SEO优化规范(新浪2010.06)
  5. 《漫画算法-小灰的算法之旅》读书笔记
  6. Java开发的推箱子小游戏407 功能非常齐全 完整源码
  7. mysql 隔离级别示例说明
  8. Android学习第七天---记录一次锁机软件的破解
  9. 新辰:淘宝C店如何利用网络整合营销和线下推广爆单?
  10. android 闪屏页处理_Android启动页面(闪屏页面)的实现