码迷,mamicode.com
首页 > 其他好文 > 详细

【转】HDU 3199 Hamming Problem: 规律打表

时间:2015-08-12 18:56:29      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

应该不是数论···逻辑思维?找规律?暂且放到支个分类下···

我的理解:

数组 num表 保存 只有P1 P2 or P3的因子的 常数 并按递增顺序。

通过已有的常数 每次循环相应的乘以P1 P2 P3, 就保证了表中的 常数 的因子排他性。

也可以 手推+程序显示 探究其规律。

#include<iostream>
using namespace std;
const int Size=100000;
long long num[Size];
int main()
{
        long long p1, p2, p3, i;
        while(cin>>p1>>p2>>p3>>i)
        {
                int k1, k2, k3;
                k1=k2=k3=0;
                num[0]=1;
                for(int j=1; j<i+1; j++)
                {
                        long long x1=num[k1]*p1;
                        long long x2=num[k2]*p2;
                        long long x3=num[k3]*p3;
                        long long Min=min(x1, x2);
                        Min=min(Min, x3);
                        num[j]=Min;
                        if(Min==x1) k1++;
                        if(Min==x2) k2++;
                        if(Min==x3) k3++;
//                        cout<<"_______________________"<<endl<<endl;
//                        cout<<"x1="<<x1<<endl;
//                        cout<<"x2="<<x2<<endl;
//                        cout<<"x3="<<x3<<endl;
//                        cout<<"Min="<<Min<<endl;
//                        cout<<"k1 k2 k3="<<k1<<" "<<k2<<" "<<k3<<endl;
//                        cout<<"_______________________"<<endl<<endl;
                }
                cout<<num[i]<<endl;
        }
}

  

 

【转】HDU 3199 Hamming Problem: 规律打表

标签:

原文地址:http://www.cnblogs.com/FightForCMU/p/4724717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!