Problem Description

F(x,m) 代表一个全是由数字x组成的m位数字。请计算,以下式子是否成立:

F(x,m) mod k ≡ c

Input

第一行一个整数T,表示T组数据。 每组测试数据占一行,包含四个数字x,m,k,c

1≤x≤9

1≤m≤10^10

0≤c<k≤10,000

Output

对于每组数据,输出两行: 第一行输出:"Case #i:"。i代表第i组测试数据。 第二行输出“Yes” 或者 “No”,代表四个数字,是否能够满足题目中给的公式。

Sample Input

3

1 3 5 2

1 3 5 1

3 5 99 69
Sample Output

Case #1:

No

Case #2:

Yes

Case #3:

Yes

Hint

对于第一组测试数据:111 mod 5 = 1,公式不成立,所以答案是”No”,而第二组测试数据中满足如上公式,所以答案是 “Yes”。

//xxxxxxx|xx*xx%k == c
//因为k<=10000,所以余数范围在[0,10000)内,故定义f[10000](作标记用)
//因为无法用m位的x直接对k取余,考虑周期性,令t=0,不断做运算t=(t*10+x)%k,f[t]=r(数组f初始化为0),
//至第r(至多10001)次时(这实际上和r位的x对k取余的结果相等),一定会出现重复的值,
//此时,r-f[t]即为周期T,也就是说,我们再向前取T位x,对k取余结果依然是t,所以我们只需再向前做(m-f[t])%T
//次(t*10+x)%k运算,从而大大降低运行时间

#include <stdio.h>
#define ll long long
int OK(int x,ll m,int k,int c)
{
int f[] = {},r,t=,left;
for(r=;r<=m;r++)
{
t = (*t+x)%k;
if(f[t])
{
left = (int)((m-f[t])%(r-f[t]));
while(left--)
{
t = (*t+x)%k;
}
return t == c;
}
f[t] = r;
}
return t == c;//m必然小于10001
}
int main()
{
int T,x,k,c,i=;
ll m;
scanf("%d",&T);
while(T--)
{
scanf("%d%lld%d%d",&x,&m,&k,&c);
printf("Case #%d\n",i++);
puts(OK(x,m,k,c)? "Yes" : "No");
}
return ;
}
//1 5 5 1 Yes
//1 3 5 2 No
//1 3 5 1 Yes
//3 5 99 69 Yes
// 8 10000000000 32 14 No
//7 9999998777 24 17 Yes
 

2016百度之星-初赛(Astar Round2A)AII X的更多相关文章

  1. 2016"百度之星" - 初赛(Astar Round2B) 1006 中位数计数

    思路:统计当前数左边比它小|大 i个人,相应右边就应该是比它大|小i个人 l数组表示左边i个人的方案 r表示右边i个人的方案 数组下标不可能是负数所以要加n //#pragma comment(lin ...

  2. 2016"百度之星" - 初赛(Astar Round2A)HDU 5695 拓扑排序+优先队列

    Gym Class Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  3. 2016百度之星 初赛2A ABEF

    只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...

  4. HDU 5690:2016"百度之星" - 初赛 All X

    原文链接:https://www.dreamwings.cn/hdu5690/2657.html All X Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  5. 2016"百度之星" - 初赛(Astar Round2A)Gym Class(拓扑排序)

    Gym Class  Accepts: 849  Submissions: 4247  Time Limit: 6000/1000 MS (Java/Others)  Memory Limit: 65 ...

  6. 2016"百度之星" - 初赛(Astar Round2A)All X(数学 矩阵)

    All X  Accepts: 1281  Submissions: 7580  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  7. 2016"百度之星" - 初赛(Astar Round2A) 1004 D Game 区间DP

    D Game Problem Description   众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它发明了一个游戏:D游戏. 度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只 ...

  8. 2016"百度之星" - 初赛(Astar Round2A)1002 / HDU 5691 状态压缩DP

    Sitting in Line Problem Description   度度熊是他同时代中最伟大的数学家,一切数字都要听命于他.现在,又到了度度熊和他的数字仆人们玩排排坐游戏的时候了.游戏的规则十 ...

  9. 2016"百度之星" - 初赛(Astar Round2A)

    题目链接: http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=701 1001 : 矩阵快速幂 #include <iostre ...

随机推荐

  1. ResponsiveSlides.js 幻灯片实例演示

    在线实例 默认效果 导航和分页 缩略图 描述说明 回调函数 <div class="wrap">     <ul class="rslides" ...

  2. 初学Node(四)事件循环

    Node中的事件循环 事件循环是Node的核心,正是因为有了事件循环JS才能够在服务端占有一席之地.JS是一种单线程语言,但是它的执行环境是多线程的在加上JS的事件驱动这一特点,使使JS在执行的过程中 ...

  3. How to copy files between sites using JavaScript REST in Office365 / SharePoint 2013

    http://techmikael.blogspot.in/2013/07/how-to-copy-files-between-sites-using.html I'm currently playi ...

  4. centos如何安装软件

    背景 之前用的linux操作系统移植都是ubuntu,没有用过redhat版本的linux,最近开始想学习redhan版本的linux,就从centos开始.在安装完centos以后,第一个碰到的问题 ...

  5. PHP读取Excel文件内容

    PHP读取Excel文件内容   项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel.   PHPExcelReader比较 ...

  6. Android 开关按钮切换,类似于iphone 效果,view实现

    1.实现的效果 gitHub :  https://github.com/zcweng/ToggleButton

  7. 深入理解Activity-任务,回退栈,启动模式

    一.任务.回退栈的概念 一个任务是多个能够和用户进行交互并且能完成某种功能的activities的集合. 这些Activity被安排回退栈中,能在合适的时候被打开显示出来. 在我们使用Android手 ...

  8. java调用python代码

    同样的我们需要安装jython,具体的步骤如下: 1. 去 http://sourceforge.net/projects/jython/ 下载最新的jython相关的jar包. 2. 下载下来的ja ...

  9. 对石家庄铁道大学网站首页进行UI分析

    对石家庄铁道大学网站首页进行UI界面分析首先,铁道大学的网页首页分为图文热点,学校新闻,校内公告,媒体看铁大,学术咨询等等模块.通过分析这些模块,可以看出,学校网站首页针对的使用对象有很多,包括学校领 ...

  10. Ubuntu15.04装机配置脚本

    #!/bin/bash echo "vim" sudo apt-get install vim cp -r ./vim/.vim ~/ cp ./vim/.vimrc ~/ ech ...