POJ 3993 Not So Flat After All
来源:互联网 发布:风中劲草使用方法 知乎 编辑:程序博客网 时间:2024/05/18 20:53
Not So Flat After All
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 356 Accepted: 151
Description
Any positive integer v can be written as p1a1*p2a2*...*pnan where pi is a prime number and ai ≥ 0. For example: 24 = 23*31.
Pick any two prime numbers p1 and p2 where p1 = p2. Imagine a two dimensional plane where the powers of p1 are plotted on the x-axis and the powers of p2 on the y-axis. Now any number that can be written as p1a1*p2a2 can be plotted on this plane at location (x, y) = (a1, a2). The figure on the right shows few examples where p1 = 3 and p2 = 2.
This idea can be extended for any N-Dimensional space where each of the N axes is assigned a unique prime number. Each N-Dimensional space has a unique set of primes.
We call such set the Space Identification Set or S for short. |S| (the ordinal of S) is N.
Any number that can be expressed as a multiplication of pi ∈ S (each raised to a power (ai ≥ 0) can be plotted in this |S|-Dimensional space. The figure at the bottom illustrates this idea for N = 3 and S = {2, 3, 7}. Needless to say, any number that can be plotted on space A can also be plotted on space B as long as SA SB.
We define the distance between any two points in a given N-Dimensional space to be the sum of units traveled to get from one point to the other while following the grid lines (i.e. movement is always parallel to one of the axes.) For example, in the figure below, the distance between 168 and 882 is 4.
Given two positive integers, write a program that determines the minimum ordinal of a space where both numbers can be plotted in. The program also determines the distance between these two integers in that space.
Pick any two prime numbers p1 and p2 where p1 = p2. Imagine a two dimensional plane where the powers of p1 are plotted on the x-axis and the powers of p2 on the y-axis. Now any number that can be written as p1a1*p2a2 can be plotted on this plane at location (x, y) = (a1, a2). The figure on the right shows few examples where p1 = 3 and p2 = 2.
This idea can be extended for any N-Dimensional space where each of the N axes is assigned a unique prime number. Each N-Dimensional space has a unique set of primes.
We call such set the Space Identification Set or S for short. |S| (the ordinal of S) is N.
Any number that can be expressed as a multiplication of pi ∈ S (each raised to a power (ai ≥ 0) can be plotted in this |S|-Dimensional space. The figure at the bottom illustrates this idea for N = 3 and S = {2, 3, 7}. Needless to say, any number that can be plotted on space A can also be plotted on space B as long as SA SB.
We define the distance between any two points in a given N-Dimensional space to be the sum of units traveled to get from one point to the other while following the grid lines (i.e. movement is always parallel to one of the axes.) For example, in the figure below, the distance between 168 and 882 is 4.
Given two positive integers, write a program that determines the minimum ordinal of a space where both numbers can be plotted in. The program also determines the distance between these two integers in that space.
Input
Your program will be tested on one or more test cases. Each test case is specified on a line with two positive integers (0 < A,B < 1, 000, 000) where A * B > 1.
The last line is made of two zeros.
The last line is made of two zeros.
Output
For each test case, print the following line:
k. X:D
Where k is the test case number (starting at one,) X is the minimum ordinal needed in a space that both A and B can be plotted in. D is the distance between these two points.
k. X:D
Where k is the test case number (starting at one,) X is the minimum ordinal needed in a space that both A and B can be plotted in. D is the distance between these two points.
Sample Input
168 882770 7920 0
Sample Output
1. 3:42. 5:6
Source
anarc 2009
题目意思,求两个数的 质因数种数和 与 每种质因数个数的差的和 的比
解题思路: 水题,快速求质因数。
#include <iostream>#include <vector>#include <map>#include <set>#include <cmath>using namespace std;const int maxn=1000000;vector <int> prime;bool isprime[maxn+10];int a,b,casen=0;void ini(){for(int i=0;i<=maxn;i++) isprime[i]=true;isprime[0]=false;isprime[1]=false;for(int i=4;i<=maxn;i+=2) isprime[i]=false;for(int i=3;i<=maxn;i+=2){for(int j=i;j<=maxn/i;j+=2){isprime[i*j]=false;}}for(int i=2;i<=maxn;i++){if(isprime[i]) prime.push_back(i);}//for(int i=0;i<=100;i++) cout<<prime[i]<<endl;//cout<<prime.size()<<endl;}void computing(){int ans=0;map <int,int> mpa,mpb;set <int>::iterator it;set <int> mys;for(int i=0;i<prime.size();i++){while(a%prime[i]==0){mpa[prime[i]]++;a=a/prime[i];mys.insert(prime[i]);}if(a==1) break;if(isprime[a]){mpa[a]++;mys.insert(a);break;}}for(int i=0;i<prime.size();i++){while(b%prime[i]==0){mpb[prime[i]]++;b=b/prime[i];mys.insert(prime[i]);}if(b==1) break;if(isprime[b]){mpb[b]++;mys.insert(b);break;}}for(it=mys.begin();it!=mys.end();it++){ans+=abs(mpa[*it]-mpb[*it]);}cout<<casen<<". "<<mys.size()<<":"<<ans<<endl;}int main(){ini();while(cin>>a>>b && (a||b)){casen++;computing();}return 0;}
- POJ 3993 Not So Flat After All
- POJ 3993 Not So Flat After All
- POJ 3993 Not So Flat After All(质因数)
- POJ 3993 Not So Flat After All(质因数)
- POJ 3993 Not So Flat After All (快速求质因子)
- HDU 3353 Not So Flat After All(数论)
- 西南交大公开赛 Not So Flat After All(合数分解)
- poj3993Not So Flat After All(筛法素数+分解质因子)
- poj 4016 Flat 水题
- ironic setup(1) -- network_type flat not supported
- poj all in all
- poj All in All
- All in All POJ
- Latest dev renames all jquery ui effects files so they no longer match core and are not replaced
- poj 1936 "all in all"
- poj 1936 All in All
- POJ 1936 All in All
- poj 1936 All in All
- javascript中的parseInt()函数和parseFloat()函数
- Java开发中的23种设计模式之四:建造者模式(Builder)
- 制作自解压安装文件
- python抓取百度图片
- Spark-0.8 release新增特性及看点
- POJ 3993 Not So Flat After All
- xuggle 支持的 ffmpeg 命令
- java类中静态代码块、构造代码块、构造函数快速理解
- JAVA笔记:集合系列3—fast-fail
- MySQL线程化请求处理
- HTTP协议相关内容
- Java开发中的23种设计模式之五:原型模式(Prototype)
- Qt5类之QPoint and QPointF
- python学习笔记—— 用的测试文件