zoukankan      html  css  js  c++  java
  • Hdu 2522 hash

    题目链接

    题意:输入整数n (1<= abs(n) <= 10^5) , 输出 1/n.

    这题不是自己做出来的...看了网上的思路.这种题目都能想到用hash..反正我是没往那里想,看到循环节我就知道不会了2333

    可以手动模拟一下除法的步骤, 对于正整数 n > 1,  被除数初始left = 1, 做除法时, 如果left < n,那么输出0,否则输出left/n, 余数为:left%n, 

    left = left * 10. 如果余数已经出现过, 那么说明是第二个循环节的开始,终止循环.

    现在想想,出题人真是碉堡了..羡慕嫉妒恨,出个题目太不容易了

    附上代码:

     1 /*************************************************************************
     2     > File Name: 2522.cpp
     3     > Author: Stomach_ache
     4     > Mail: sudaweitong@gmail.com
     5     > Created Time: 2014年05月13日 星期二 22时27分32秒
     6     > Propose: 
     7  ************************************************************************/
     8 
     9 #include <cmath>
    10 #include <string>
    11 #include <cstdio>
    12 #include <fstream>
    13 #include <cstring>
    14 #include <iostream>
    15 #include <algorithm>
    16 using namespace std;
    17 
    18 bool hash[100002];
    19 
    20 void
    21 solve(int n) {
    22       memset(hash, false, sizeof(hash));
    23       int left = 1;
    24     hash[1] = true;
    25     while (left) {
    26           left *= 10;
    27         printf("%d", left/n);
    28         left %= n;
    29         if (hash[left]) {
    30               break;
    31         } else {
    32               hash[left] = true;
    33         }
    34     }
    35 
    36     return ;
    37 }
    38 
    39 int
    40 main(void) {
    41       int T;
    42     scanf("%d", &T);
    43     while (T--) {
    44           int n;
    45         scanf("%d", &n);
    46         if (n < 0) {
    47               printf("-");
    48             n *= -1;
    49         } 
    50       if (n == 1) {
    51               printf("1
    ");
    52             continue;
    53         }
    54         printf("0.");
    55         solve(n);
    56         puts("");
    57     }
    58 
    59     return 0;
    60 }
    61     
  • 相关阅读:
    28完全背包+扩展欧几里得(包子凑数)
    HDU 3527 SPY
    POJ 3615 Cow Hurdles
    POJ 3620 Avoid The Lakes
    POJ 3036 Honeycomb Walk
    HDU 2352 Verdis Quo
    HDU 2368 Alfredo's Pizza Restaurant
    HDU 2700 Parity
    HDU 3763 CDs
    POJ 3279 Fliptile
  • 原文地址:https://www.cnblogs.com/Stomach-ache/p/3726706.html
Copyright © 2011-2022 走看看