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

F(x,m) mod k ≡ c

Input

第一行一个整数T,表示T组数据。

每组测试数据占一行,包含四个数字x,m,k,c

1≤x≤9

1≤m≤1010

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”。

问公式是否成立,因为位数太大,所以只能一点点取模,每次记录取模结果,如果发现重复了,那没就看之前取的是不是一样

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <iomanip>
#include<cmath>
#include<float.h>
#include<string.h>
#include<algorithm>
#define sf scanf
#define pf printf
#define sca(x) scanf("%d",&x)
#define mm(x,b) memset((x),(b),sizeof(x))
#include<vector>
#include<queue>
#include<map>
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
typedef long long ll;
const ll mod=1e9+100;
const double eps=1e-8;
using namespace std;
const double pi=acos(-1.0);
const int inf=0xfffffff;
const int N=10005;
int bits;
int a[N],b[N];
void solve(ll x,ll m,ll k,ll c)
{
pf("Case #%d:\n",bits++);
mm(a,0);mm(b,0);
ll temp=0,ans=0;
a[0]=1;
ll cas=1;
rep(i,0,m)
{
ans=(ans*10+x)%k;
if(i+1==m&&ans==c)//如果结束了
temp=1;
else
{
if(a[ans])//之前是否有出现
{
if(b[m%cas]==c)//看剩下的能否于之前记录的相同
temp=1;
break;
}else//没出现记录下状态
{
a[ans]=1;
b[cas++]=ans;
}
}
}
if(temp)
pf("Yes\n");
else
pf("No\n");
}
int main()
{
int re;cin>>re;
bits=1;
while(re--)
{
ll x,m,k,c;
cin>>x>>m>>k>>c;
solve(x,m,k,c);
}
return 0;
}

随机推荐

  1. 透明Panel

    unit TransparentPanel; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Varia ...

  2. 福利:42套AI技术视频免费领取

    <福利:33套AI技术视频免费领取> 视频获取方式:请加机器学习和自然语言(QQ群号:436303759)群后,私信群主获取(备注上自己想要获取是视频名称),仅限本群公众号粉丝成员,多套视 ...

  3. git变慢的原因

    最近使用git更新代码变慢,进一步试了一下提交代码.执行git命令都很慢,换了idea的工作目录.更换git版本,所有操作都是徒劳. 最后关了火绒杀毒软件,才快了起来. 坑坑坑坑坑的火绒杀毒!浪费我至 ...

  4. ios the request was denied by service delegate for reason unspecified

    报错的情况如下: xcode8(The request was denied by service delegate (SBMainWorkspace) for reason: Unspecified ...

  5. Unity应用架构设计(8)——使用ServiceLocator实现对象的注入

    对象的 『注入』 是企业级软件开发经常听到的术语.如果你是一个 Java 程序员,一定对注入有着深刻的映像.不管是SSH框架还是SSM框架,Spring 全家桶永远是绕不过去的弯.通过依赖注入,可以有 ...

  6. 抽奖活动 mark

    ).prizeName().remainingPrize().prizeRate().prizeName().remainingPrize().prizeRate().prizeName().rema ...

  7. java设计模式三种工厂模式简单介绍

    一.简单工厂模式 概述:简单工厂模式的创建意图就是,把对类的创建初始化全都交给一个工厂来执行,而用户不需要去关心创建的过程是什么样的,只用告诉工厂我想要什么就行了.而这种方法的缺点也很明显,违背了设计 ...

  8. python之字符串操作方法

    定义及特性: 以引号(单引号,双引号,三引号)包围且不能修改 a= ' \t aBcdE fgFijDlmNopq rSt uTwxy z 123 !@# \t ' 一.判断字符串,返回bool值:F ...

  9. [转]java List和数组相互转换方法

    原文地址:https://blog.csdn.net/zjx2016/article/details/78273192 前言在java项目中数组和list集合(这里指ArrayList)经常需要互相转 ...

  10. [转]Linux下网络常用命令和工具

    转自:http://int32bit.me/2016/05/04/Linux%E5%B8%B8%E7%94%A8%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7%E6%80%B ...