LINK:值日班长值周班长

题目描述非常垃圾。

题意:一周5天 每周有一个值周班长 每天有一个值日班长 值日班长日换 值周班长周换。

共n个值日班长 m个值周班长 A是第p个值日班长 B是第q个值日班长 问 最早是哪一天 使得值日班长为A且值周班长为B.

显然是一个类似于方程组的题目 可以列出方程 设是第x天.

\((x-p)\mod n=0\)

\(\lceil\frac{x}{5}\rceil \mod m=q-1\)

整到一个方程里就是 x=ny+p.

\(\lceil\frac{ny+p}{5}\rceil \mod m=q-1\)

解出来y即可。发现向上取整非常的不人性。

考虑到\(\frac{ny+p+bit}{5}==\lceil\frac{ny+p}{5}\rceil\)

枚举一下bit(0<=bit<=4)这样向上取整就可以被去掉 解同余方程即可。

有点晕了。。。写挂了。咕掉

ll T,n,m,p,q,xx,yy;
ll ans;
inline ll exgcd(ll a,ll b)
{
if(!b){xx=1;yy=0;return a;}
ll d=exgcd(b,a%b);
ll zz=xx;xx=yy;yy=zz-a/b*yy;
return d;
}
signed main()
{
freopen("1.in","r",stdin);
while(gt(n)==1)
{
gt(p);ans=0;
gt(m);gt(q);if(q==m)q=0;
rep(0,4,i)
{
ll a=n,b=5*m;
ll c=((5*q-p-i)%b+b)%b;
ll gcd=exgcd(a,b);
if(c%gcd)continue;
ll mod=b/gcd;
xx=(xx%mod+mod)%mod;
xx=xx*c/gcd;
ll now=xx*n+p;
if(!ans)ans=now;
else ans=min(ans,now);
}
if(ans)putl(ans);
else puts("Orz mgh!!!");
}
return 0;
}

最新文章

  1. SOLID 设计原则
  2. 问题解决——MFC Ribbon 响应函数 错乱 执行其他函数
  3. [tem]RMQ(st)
  4. PHP魔术方法在框架中的应用
  5. hadoop集群全纪录
  6. paper 92:图像视觉博客资源2之MIT斯坦福CMU
  7. mysql大数据导出导入
  8. C# 实现HTML5服务器推送事件
  9. Apriori算法-位运算-C语言
  10. SAN &amp; vSAN &amp; vSAN storage
  11. Windows内核函数
  12. 大数运算的算法设计和C++实现
  13. Kafka系列之-自定义Producer
  14. 熟悉使用Github,VS进行项目的开发(第二次作业)
  15. InstallShield Limited Edition for Visual Studio 使用
  16. 如何卸载EXCEL中的插件?
  17. sitecore系统教程之体验编辑器中创建一个项目
  18. docker swarm英文文档学习-6-添加节点到集群
  19. JDBC结果集
  20. HTML5 Canvas ( 贝塞尔曲线, 一片星空加绿地 ) quadraticCurveTo, bezierCurveTo

热门文章

  1. 常用API - Arrays、Math、Object
  2. 03-springboot整合elasticsearch-源码初识
  3. Evacuation,题解
  4. Python-模块XlsxWriter将数据写入excel
  5. 二分查找&amp;二叉排序树
  6. python数据处理(二)之处理Excel文件
  7. row_number() over()排序功能说明
  8. OSCP Learning Notes - WebApp Exploitation(2)
  9. javascript : 点击按钮,把某标签中的内容复制到剪贴板
  10. win10里面怎么获取最高管理员权限