新——半数集问题(来尝试一把吧!)
//半数集问题(给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:)//1、n包含于set(n);
//2、在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
//3、按此规则进行处理,直到不能添加自然数为止。例如,set(6)={6,16,26,126,36,136}.半数集set(6)中有6个元素。
#include<iostream>
using namespace std;
int mul(int n)//10倍数
{
int pow=1;
for(int i=0;n!=0;i++)
n/=10;
for(int j=0;j<i;j++)
pow*=10;
return pow;
}
int set(int n,int &count)
{
int m;
for(int i=1;i<=n/2;i++)
{
m=i*mul(n)+n;
cout<<" "<<m;
count++;
if((m-n)/mul(n)>=2)
count=set(i,count);
//cout<<" "<<m;
}
return count;
}
void main()
{
int count=1,n;
cout<<"Enter your number n:"<<endl;
cin>>n;
cout<<n;
count=set(n,count);
cout<<endl<<count<<endl;
}
其中set(6)={6,16,26,126,36,136}.输出有错误,我实在想不出来,寻求高手相助!另编写一个set()函数也行!先谢谢了!