zoukankan      html  css  js  c++  java
  • hdu_5690_All X(找循环节)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5690

    题意:

    Problem Description

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

    F(x,m) mod k equiv cF(x,m) mod k  c

    Input

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

    1leq xleq 91x9

    1leq mleq 10^{10}1m1010

    0leq c< kleq 10,0000c<k10,000

    Output

    对于每组数据,输出两行: 第一行输出:"Case #i:"。ii代表第ii组测试数据。 第二行输出“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”。

    题解:找找循环节就行

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 #include<string>
     5 #include<set>
     6 #include<map>
     7 #include<vector>
     8 #include<queue>
     9 #include<algorithm>
    10 #include<functional>
    11 #define cl(a,b) memset(a,b,sizeof(a));
    12 #define FFC(i,a,b) for(int i=a;i<=b;++i)
    13 #define FFI(i,a,b) for(int i=a;i>=b;--i)
    14 #define pb push_back
    15 #define LL long long
    16 using namespace std;
    17 int v[10010],ans[10010];
    18 int main(){
    19     int t,ic=1;
    20     scanf("%d",&t);
    21     while(t--){
    22         printf("Case #%d:
    ",ic++);
    23         int a,c,k,pre,tmp,cnt,cct;LL m,mm;
    24         scanf("%d%I64d%d%d",&a,&m,&k,&c);
    25         FFC(i,0,k)v[i]=0;
    26         tmp=0,cnt=0,cct=0,mm=-1;
    27         while(tmp<=k&&m--)tmp=tmp*10+a;
    28         if(tmp<=k){
    29             if(tmp%k==c)puts("Yes");
    30             else puts("no");
    31             continue;
    32         }
    33         mm=++m,tmp/=10;
    34         while(m--){
    35             tmp=tmp*10+a;
    36             int ttmp=tmp%k;
    37             tmp%=k;
    38             if(v[ttmp])break;
    39             else v[ttmp]++,cnt++,ans[++cct]=ttmp;
    40         }
    41         int vv=mm%cnt;
    42         if(vv==0)vv=cnt;
    43         if(ans[vv]==c)printf("Yes
    ");
    44         else printf("No
    ");
    45     }
    46     return 0;
    47 }
    View Code



  • 相关阅读:
    静态主席树
    uva 11107 Life Forms
    codeforce 605B. Lazy Student
    codeforce 606B Testing Robots
    codeforce 606C
    codeforce 606A
    uva 11019 Matrix Matcher
    uva 11468 Substring
    uvalive 4670 Dominating Patterns
    codeforce 603B
  • 原文地址:https://www.cnblogs.com/bin-gege/p/5696148.html
Copyright © 2011-2022 走看看