ZOJ 3622 Magic Number(数)

题意  假设一个正整数y满足  将随意正整数x放到y的左边得到的数z满足 z%y==0  那么这个数就是个Magic Number   给你一个范围  求这个范围内Magic Number的个数

令 l表示y的位数  ly=10^l  那么z=x*ly + y  要z%y==0   easy看出  仅仅需 x*ly%y==0

又由于x是随意的  所以一个Magic Number必须满足 ly%y==0

y<2^31  所以l最大为10 直接枚举l  找到全部符合的y即可了

当 ly%y==0
 时  y>=ly/10&&y<ly  即ly是比y多一位数的 令t=ly/y
 那么肯定有 1<t<=10  对于每一个ly  我们就仅仅用枚举t了

#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 50;
typedef long long ll;
ll p[N], n, m;

int main()
{
    int cnt = 0, ans;   //ly为10^l
    for(ll ly = 10; ly < 1e11; ly *= 10)
    {
        for(ll t = 10; t > 1; --t)  //若(ly/y==t) 必有1<t<=10
            if(ly % t == 0) p[cnt++] = ly / t;
    }

    while(~scanf("%lld%lld", &n, &m))
    {
        ans = upper_bound(p, p + cnt, m) - lower_bound(p, p + cnt, n);
        printf("%d\n", ans);
    }
    return 0;
}

Magic Number


Time Limit: 2 Seconds      Memory Limit: 32768 KB



A positive number y is called magic number if for every positive integer x it satisfies that put y to the right of x, which will form a new integer zz mod y =
0.

Input

The input has multiple cases, each case contains two positve integers mn(1 <= m <= n <= 2^31-1), proceed to the end of file.

Output

For each case, output the total number of magic numbers between m and n(mn inclusively).

Sample Input

1 1
1 10

Sample Output

1
4
时间: 2024-10-12 08:05:21

ZOJ 3622 Magic Number(数)的相关文章

ZOJ 3622 Magic Number 打表找规律

A - Magic Number Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice ZOJ 3622 Appoint description: Description A positive number y is called magic number if for every positive integer x it satisfies that

zoj 3622 Magic Number(找规律)

唉------写的相当的乱,状态十分不好. 可以求每个数前面有多少个magic number,然后相减即可. #include<iostream> #include<cmath> using namespace std; int num(int x) { int sum=0; while(x>0) { sum++; x/=10; } return sum-3; } double pow(int b) { double s=1; for(int i=1; i<=b; i+

zoj 3622 Magic Number 【规律】

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3622 题目大意: 如果一个数字x满足如下条件: 任意加一个数字y在x的左边,都能是yx是x的倍数,比如1满足,2满足,5满足条件. 然后最开始以为1 2 5 的十倍数10 20 50 , 100 200 500 以及很多,然后后来发现了一个bug就是25 ,发现找的规律是有问题的. 后来发现是10 100 1000 10000 分别除以1 2 3 4 5 6 7

ZOJ 2477 Magic&#160;Cube(魔方)

ZOJ 2477 Magic Cube(魔方) Time Limit: 2 Seconds      Memory Limit: 65536 KB This is a very popular game for children. In this game, there's a cube, which consists of 3 * 3 * 3 small cubes. We can unwrap the cube, it will become like this: 这是个有名的儿童游戏.游戏

magic number介绍

magic number:魔数,这是放在linux的目录中的文件信息块中的一个标识符,一般只有几位,用来标识该文件是什么类型的文件,可以被什么样的应用使用.这个魔数不是固定的,有时候一个文件信息中的魔数可能会不断变化.这个东西不重要的,对用户造不成多少影响.两个例子:1.ELF文件的头部,前4个字节是魔数.这个常用于识别文件类型等.linux上,二进制的可执行文件的前四个字节是7f45,而在AIX上,二进制可执行文件的前四个字节是0x01df.2.内核程序中,给一些 IO 操作进行编号时,也会用

Magic Number(Levenshtein distance算法)

Magic Number Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4323 Description There are many magic numbers whose lengths are less than 10. Given some queries, each contains a single number, if t

resize2fs: Bad magic number in super-block while trying to open

I am trying to resize a logical volume on CentOS7 but am running into the following error: resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-root Couldn't find valid filesystem superbloc

LVM XFS增加硬盘分区容量(resize2fs: Bad magic number in super-block while)

LVM XFS增加硬盘分区容量(resize2fs: Bad magic number in super-block while) 2015-09-04 11:28:01 分类: Linux LVM XFS增加硬盘分区容量(resize2fs: Bad magic number in super-block while) 给某个硬盘增加分区之后 [[email protected]-213-66 ~]# df -h Filesystem Size Used Avail Use% Mounted

LVM 扩容报错:resize2fs: Bad magic number in super-block while......

废话不多说,这里直接举例说明: [[email protected] ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_mysql0121366-LogVol02 7.7G 2.6G 4.8G 36% /tmpfs 495M 0 495M 0% /dev/shm/dev/sda1 194M 29M 155M 16% /boot/dev/mapper/vg_mysql0121366-LogVol01 8.0G 3.1