【幂数列】设x,y为非负整数,试计算集合M={2^x*3^y|x>=0,y>=0}的元素小于指定整数n的个数, 并求这些元素从小到大序列的第m项。
来源:互联网 发布:东风41导弹数据 编辑:程序博客网 时间:2024/04/28 00:10
/*
* 【幂数列】
* 设x,y为非负整数,试计算集合M={2^x*3^y|x>=0,y>=0}的元素小于指定整数n的个数,
* 并求这些元素从小到大序列的第m项。
*/
package test1;
import java.util.Scanner;
public class demo {
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int i,j,k,h,u,m;
int c[]=new int[100];
double d,n,t;
double f[]=new double[1000];
System.out.print("计算小于n的项数,请指定:");
n=in.nextDouble();
System.out.print("输出序列的第m项,请指定m:");
m=in.nextInt();
k=1;
t=1.0;
i=1;
c[0]=1;
f[1]=1.0;
while(true)
{
u=0; //是否继续递推的标志,为1,表示继续;为0,表示退出。
for(j=0;j<=i-1;j++)
{
h=c[i-1]+j; //h代表第i行第j个元素在f[]数组中的索引
if(f[h]*2<n && f[h]>0)
{
k++;
f[k]=f[h]*2;
u=1;
if(j==0)
c[i]=k;
}
else break;
}
t=t*3;
if(t<n && t>0)
{
k++;
f[k]=t;
}
if(u==0)
break;
i++;
}
for(i=1;i<k;i++) //冒泡排序
for(j=1;j<k-1;j++)
if(f[j-1]>f[j])
{
d=f[j];
f[j]=f[j-1];
f[j-1]=d;
}
System.out.printf("幂序列中小于%f的项数为:%d\n",n,k);
if(m<k)
System.out.printf("从小到大排列的第%d项为:%.0f",m,f[m]);
else
System.out.println("所输入的m大于序列的项数!");
}
}
* 【幂数列】
* 设x,y为非负整数,试计算集合M={2^x*3^y|x>=0,y>=0}的元素小于指定整数n的个数,
* 并求这些元素从小到大序列的第m项。
*/
package test1;
import java.util.Scanner;
public class demo {
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int i,j,k,h,u,m;
int c[]=new int[100];
double d,n,t;
double f[]=new double[1000];
System.out.print("计算小于n的项数,请指定:");
n=in.nextDouble();
System.out.print("输出序列的第m项,请指定m:");
m=in.nextInt();
k=1;
t=1.0;
i=1;
c[0]=1;
f[1]=1.0;
while(true)
{
u=0; //是否继续递推的标志,为1,表示继续;为0,表示退出。
for(j=0;j<=i-1;j++)
{
h=c[i-1]+j; //h代表第i行第j个元素在f[]数组中的索引
if(f[h]*2<n && f[h]>0)
{
k++;
f[k]=f[h]*2;
u=1;
if(j==0)
c[i]=k;
}
else break;
}
t=t*3;
if(t<n && t>0)
{
k++;
f[k]=t;
}
if(u==0)
break;
i++;
}
for(i=1;i<k;i++) //冒泡排序
for(j=1;j<k-1;j++)
if(f[j-1]>f[j])
{
d=f[j];
f[j]=f[j-1];
f[j-1]=d;
}
System.out.printf("幂序列中小于%f的项数为:%d\n",n,k);
if(m<k)
System.out.printf("从小到大排列的第%d项为:%.0f",m,f[m]);
else
System.out.println("所输入的m大于序列的项数!");
}
}
0 0
- 【幂数列】设x,y为非负整数,试计算集合M={2^x*3^y|x>=0,y>=0}的元素小于指定整数n的个数, 并求这些元素从小到大序列的第m项。
- x+2y+3z=n的非负整数解数
- 求28 * x + 15 * y = 95108的所有x与y的整数值个数
- 求区间x∈[1,n],y∈[1,m],gcd(x,y)=1的数量 [容斥]
- 求两个整数的最大公约数,算法原理辗转相除法 原理: GCD (x,y) = GCD(y,x%y)
- USTCOJ 1271 方程X+2Y+5Z=N非负整数解计数
- [ACM] HDU 3398 String (从坐标0,0走到m,n且不能与y=x-1相交的方法数,整数唯一分解定理)
- 计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值
- 笔试面试13--给定 x, k ,求满足 x + y = x | y 的第 k 小的正整数 y
- 证明题:证明当n是一个整数且n>2时,方程x^n+y^n=z^n无正整数x,y,z的解。
- 算法导论9.3-8-设X[1..n]和Y[1..n]为两个数组,每个都包含n个已排好序的数,给出一个求数组X和数组Y中所有2n个元素的中位数
- 对正整数x、y连续进行求余,直到余数为0,此时非0的除数就是最大公约数。x除以y的余数是r,若r不等于0,则把y作为新的x,r作为新的y,重复x除以y的运算,直到r=0为止,此时y就为所求的最大公约数
- 【欧拉函数 && 求gcd(n, x) = y,x的个数】UVA
- x+=y与x=x+y的区别
- x+=y与x=x+y的区别
- 求指定分段函数y=x-1(x>1);y=-x+1(x<=1)的输出
- 假设x[m], y[n]是两个排好序的数组,并且没有重复元素,要找第k小的元素
- y=x++ + ++x(int x=0)的结果?
- 算法导论-单源最短路径-Dijkstra算法的实现
- Facebook以20亿美元收购Oculus:虚拟现实将是未来计算平台又一大事件
- cocos2d-x按钮CCControlButton的用法
- VMware Workstation Network
- 使用AVR Studio 设置熔丝位并烧写程序
- 【幂数列】设x,y为非负整数,试计算集合M={2^x*3^y|x>=0,y>=0}的元素小于指定整数n的个数, 并求这些元素从小到大序列的第m项。
- 在VS中利用swig导出c/c++ 的python接口文件
- MongoDB与内存
- 初创企业非技术人员的迷思
- Git的基本概念
- Linux 目录结构
- html元素作为普通文本输出
- 【实用随记】delete动画回调
- php 发送请求的三种方式