数的计算

要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1. 不作任何处理;
2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

int NumberSize(const int& n);
string GetString(const int& n);
void Append(const string& dest,const int& src);

int main()
{
int n;
cin>>n;

for(int i=1;i<=n/2;++i)
   Append(GetString(n),i);
cout<<endl;
return 0;
}

int NumberSize(const int& n)
{
int src=n;
int size=1;
while(src/10!=0)
{
   src/=10;
   ++size;
}
return size;
}

string GetString(const int& n)
{
char *temp=new char[ NumberSize( n )];
string str=itoa(n,temp,10);
return str;
}

void Append(const string& dest,const int& src)
{
string str=GetString(src)+dest;
cout<<str<<'/t';
if(src>1)
   for(int i=1;i<=src/2;++i)
    Append(str,i);
}

输入

一个自然数n

输出

一个数,表示满足条件的数的个数

样例输入

6

样例输出

6

提示

样例说明:满足条件的数是6,16,26,126,36,136

/************************************************************************/

例如输入36

36
136     236     1236    336     1336    436     1436    2436    12436   536
1536    2536    12536   636     1636    2636    12636   3636    13636   736
1736    2736    12736   3736    13736   836     1836    2836    12836   3836
13836   4836    14836   24836   124836 936     1936    2936    12936   3936
13936   4936    14936   24936   124936 1036    11036   21036   121036 31036
131036 41036   141036 241036 1241036 51036   151036 251036 1251036 1136
11136   21136   121136 31136   131136 41136   141136 241136 1241136 51136
151136 251136 1251136 1236    11236   21236   121236 31236   131236 41236
141236 241236 1241236 51236   151236 251236 1251236 61236   161236 261236
1261236 361236 1361236 1336    11336   21336   121336 31336   131336 41336
141336 241336 1241336 51336   151336 251336 1251336 61336   161336 261336
1261336 361336 1361336 1436    11436   21436   121436 31436   131436 41436
141436 241436 1241436 51436   151436 251436 1251436 61436   161436 261436
1261436 361436 1361436 71436   171436 271436 1271436 371436 1371436 1536
11536   21536   121536 31536   131536 41536   141536 241536 1241536 51536
151536 251536 1251536 61536   161536 261536 1261536 361536 1361536 71536
171536 271536 1271536 371536 1371536 1636    11636   21636   121636 31636
131636 41636   141636 241636 1241636 51636   151636 251636 1251636 61636
161636 261636 1261636 361636 1361636 71636   171636 271636 1271636 371636
1371636 81636   181636 281636 1281636 381636 1381636 481636 1481636 2481636
12481636        1736    11736   21736   121736 31736   131736 41736   141736
241736 1241736 51736   151736 251736 1251736 61736   161736 261736 1261736
361736 1361736 71736   171736 271736 1271736 371736 1371736 81736   181736
281736 1281736 381736 1381736 481736 1481736 2481736 12481736        1836
11836   21836   121836 31836   131836 41836   141836 241836 1241836 51836
151836 251836 1251836 61836   161836 261836 1261836 361836 1361836 71836
171836 271836 1271836 371836 1371836 81836   181836 281836 1281836 381836
1381836 481836 1481836 2481836 12481836        91836   191836 291836 1291836
391836 1391836 491836 1491836 2491836 12491836
Press any key to continue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值