hdu2964-Prime Bases
来源:互联网 发布:中国域名网站 编辑:程序博客网 时间:2024/05/16 04:35
http://acm.hdu.edu.cn/showproblem.php?pid=2964
题意,给你一个整数n,现在要你分解成 n = k1 * ( 2 * 3 * ....*x1 ) + k2 * ( 2 * 3 * .... *x2 ) + ........;其中后面均为素数,且是由最小的2递增相乘;
分析:首先打印素数表;然后使用数组a【】来储存到从第一个素数2到第几个素数乘积。找到第i个小于n,第i +1个大于n的数值 i ;
然后分解n.使用数组b【】来储存a【i】的个数;同理执行多次,知道将n分解完毕;
如下的这种输出格式比较好,大家可以参考下;
参照做的;
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<bitset>#include<iomanip>using namespace std;const int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,39,41,43,47,51,53,57,59}; __int64 a[21]; int b[21],rem; void init( ){a[ 0 ] = 1 ;for( int i =1 ; i < 21 ; ++i )a[ i ] = a[ i - 1 ] * prime[ i - 1 ] ;}void deal( int n ){int i ;for( int i = 0 ; i < 21 ; ++i ){if( a[ i ] <= n && a[ i + 1 ] > n ){rem = i ;break ;}}memset( b , 0 ,sizeof( b ) ) ;for( int i = rem ; i >=0 ; --i ){b[ i ] = n / a[ i ] ;n %= a[ i ] ;}}void output( int n ){cout << n << " = " ;for( int i = 0 ; i <= rem ; ++i ){if( b[ i ] ){cout << b[ i ] ;for( int j = 0 ; j < i ; ++j )cout << "*" << prime[ j ] ;if( i != rem )cout << " + " ;}}cout << endl ;}int main( ){init( ) ;int n ;while( cin >> n , n ){deal( n ) ;output( n );}return 0 ;}
- hdu2964-Prime Bases
- Prime Bases
- Prime Bases
- HDU 2964 Prime Bases
- hdu 2964 Prime Bases
- hdu 2964 Prime Bases
- hdu 2964 Prime Bases
- HDU 2964 Prime Bases 数论
- hdu 2964 Prime Bases 数论~~
- UVALive 4225 Prime Bases 贪心
- 杭电 “Prime Bases ”解题报告
- hdu 2964 Prime Bases (数学:算不上太水)
- HDU 2964 Prime Bases(数论)
- HDU 2964 Prime Bases [Ad Hoc]
- UVALive 4225 Prime Bases(math)
- Numerical Bases
- Numerical Bases
- Two Bases
- i686-w64-mingw32编译win-vlc问题
- JNI(3)
- 计算净现值和内部报酬率的方法
- Tomcat Session过期时间
- android利用javamail发送含有附件的邮件 问题笔记
- hdu2964-Prime Bases
- 在MFC中使用OpenCV,控件显示图像
- Cocos2D-X 核心类
- android
- javascript封装url中参数为对象
- PL/SQL Developer连接不上Win7 64位系统下安装的Oracle11g64位的解决办法
- Cocos2d-x初级篇之工程的创建和编译(windows环境)
- Android开发_网络编程之Http通信
- yii中的render、renderPartial、renderText区别