博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1786. 韩信点兵
阅读量:4663 次
发布时间:2019-06-09

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

★★★   输入文件: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行,每行两个非负整数Piai,代表韩信选择的素数和此时剩下的人数。

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

 

【输出格式】

 

输出一行,一个整数。

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

 

【样例输入】

1500 33 25 47 6

【样例输出】

31

【数据范围】

30%,1N1,000,000,1M4;

50%1N100,000,000,1M8;

100%1N1,000,000,000,000,1M10;1012,0ai<Pi.

#include
#include
#include
#include
#include
#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<
<
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

你可能感兴趣的文章
(二 )结构ztree的 ajax交互的简单使用
查看>>
window.showModalDialog()
查看>>
实现一个纵向排列的 ListBox ,并具有操作按钮
查看>>
c语言中会遇到的面试题
查看>>
flask快速入门
查看>>
创建mysql数据库并指定编码
查看>>
四. 并发编程 (进程锁概念使用)
查看>>
没有cv2.so文件
查看>>
RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa
查看>>
计算机解疑补漏之理解流水线的几点要义
查看>>
dubbo 之filter使用
查看>>
eclipse快捷键调试总结
查看>>
MySQL系列之二四种隔离级别及加锁
查看>>
js实时计算价格
查看>>
【JZOJ5094】【GDSOI2017第四轮模拟day3】鸽子 计算几何+floyd
查看>>
jenkins安装以及部署项目
查看>>
Eclipse 向 IDEA 过渡
查看>>
Kolmogorov–Smirnov test(KS)
查看>>
JWT(json web token)
查看>>
微信开发创业交流QQ群列表
查看>>