洛谷-2的次幂表示-过程函数与递归

题目描述 Description

  任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。
  将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0
  现在约定幂次用括号来表示,即a^b表示为a(b)
  此时,137可表示为:2(7)+2(3)+2(0)
  进一步:7=2^2+2+2^0 (2^1用2表示)
  3=2+2^0 
  所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)
  又如:1315=2^10+2^8+2^5+2+1
  所以1315最后可表示为:
  2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

     输入输出格式 Input/output

输入格式

  正整数(1<=n<=20000)

输出格式

  符合约定的n的0,2表示(在表示中不能有空格)

样例测试点#1

样例输入

  137

样例输出

  2(2(2)+2+2(0))+2(2+2(0))+2(0)

样例测试点#2

样例输入

  1315

样例输出

  2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
提示:
  用递归实现会比较简单,可以一边递归一边输出

代码如下:

 1 #include <stdio.h>
 2 int y=0,oo;
 3 int fun2(int y,int floor)
 4 {
 5     int t;
 6     if(y==0)
 7     {
 8         return 0;
 9     }
10     else
11     {
12         t=y%2;
13         fun2(y/2,floor+1);
14         if(t==1)
15         {
16             if(floor==1)
17             {
18                 if(y/2==0)//最高位
19                 {
20                     printf("2");
21                 }
22                 else
23                 {
24                     printf("+2");
25                 }
26             }
27             else
28             {
29                 if(y/2==0)//最高位
30                 {
31                     if(floor==0)
32                     {
33                         printf("2(0)");
34                     }
35                     else
36                     {
37                         printf("2(");
38                         fun2(floor,0);
39                         printf(")");
40                     }
41                 }
42                 else
43                 {
44                     if(floor==0)
45                     {
46                         printf("+2(0)");
47                     }
48                     else
49                     {
50                         printf("+2(");
51                         fun2(floor,0);
52                         printf(")");
53                     }
54                 }
55
56             }
57
58         }
59     }
60     return 0;
61 }
62 int main()
63 {
64     int n;
65     scanf("%d",&n);
66     fun2(n,0);
67     printf("\n");
68     return 0;
69 }
时间: 2025-01-13 14:03:11

洛谷-2的次幂表示-过程函数与递归的相关文章

洛谷-回文质数-过程函数与递归

题目描述 Description 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数; 输入输出格式 Input/output 输入格式:第 1 行: 二个整数 a 和 b .输出格式:输出一个回文质数的列表,一行一个. 输入输出样例 Sample input/output 样例测试点#1 输入样例: 5 500 输出样例: 571

洛谷P3390矩阵快速幂

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>typedef long long ll;using namespace std; ll n,m,i,j,k; struct Matrix { ll a[105][105]; inline Matrix operator *(const Matrix &b)const { Matrix ret; for

洛谷-数的计算-过程函数与递归

题目描述 Description 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3.加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入输出格式 Input/output 输入格式:一个自然数n(n<=1000)输出格式:一个整数,表示具有该性质数的个数. 输入输出样例 Sample input/output 样例测

洛谷P3601签到题(欧拉函数)

题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 输入格式: 一行两个整数,l.r. 输出格式: 一行一个整数表示答案. 输入输出样例 输入样例#1: 233 2333 输出样例#1: 1056499 输入样例#2: 2333333333 2333666666 输出样例#2: 153096296 说明 对于30%的数据,. 对于60%的数据,.

过程函数与递归

P1028 数的计算 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数 nn ): 先输入一个自然数 nn ( n \le 1000n≤1000 ),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入输出格式 输入格式: 11 个自然数 nn ( n \le 1000n≤1000 ) 输出格式: 11 个整数,表示具有该性质数的个数. 输入输出样例 输入样例#1

洛谷OJ P1010 幂次方 解题报告

洛谷OJ P1010 幂次方 解题报告 by MedalPluS 题目描述   任何一个正整数都可以用2的幂次方表示.例如        137=2^7+2^3+2^0         同时约定方次用括号来表示,即a^b 可表示为a(b).由此可知,137可表示为:        2(7)+2(3)+2(0)进一步:7= 2^2+2+2^0   (21用2表示)        3=2+20   所以最后137可表示为:        2(2(2)+2+2(0))+2(2+2(0))+2(0)又如

【模板】矩阵快速幂 洛谷P2233 [HNOI2002]公交车路线

P2233 [HNOI2002]公交车路线 题目背景 在长沙城新建的环城公路上一共有8个公交站,分别为A.B.C.D.E.F.G.H.公共汽车只能够在相邻的两个公交站之间运行,因此你从某一个公交站到另外一个公交站往往要换几次车,例如从公交站A到公交站D,你就至少需要换3次车. Tiger的方向感极其糟糕,我们知道从公交站A到公交E只需要换4次车就可以到达,可是tiger却总共换了n次车,注意tiger一旦到达公交站E,他不会愚蠢到再去换车.现在希望你计算一下tiger有多少种可能的乘车方案. 题

洛谷OJ P1045 麦森数 解题报告

洛谷OJ P1045 麦森数 解题报告 by MedalPluS   题目描述 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:从文件中输入P(1000<P<3100000),计算2P-1的位数和最后500位数字(用十进制高精度数表示)   输入描述   文件中只包含一个整数P(1000&l

洛谷教主花园dp

洛谷-教主的花园-动态规划 题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教主最喜欢3种树,这3种树的高度分别为10,20,30.教主希望这一圈树种得有层次感,所以任何一个位置的树要比它相邻的两棵树的高度都高或者都低,并且在此条件下,教主想要你设计出一套方案,使得观赏价值之和最高. 输入输出格式 输入格式: 输入文件garden.in的第1行为一个正整数n,表示需要种的