洛谷 P1010 [NOIP1998 普及组] 幂次方(递归套娃)
程序员文章站
2022-05-08 23:49:20
...
菜鸟生成记(71)
对代码失去兴趣的第N天,写个水题提升一下兴致;
模拟,递归套娃,if套if
C语言 log2n表示:log(n)/log(2)
#include <iostream>
#include<cstdio>
#include<cmath>
using namespace std;
void fun(int y)
{
int x=y,flag=0;
while(x>=1)
{
y=log(x)/log(2);//2^y;
if(y>1)
{
if(flag==0)
printf("2(");
else
printf("+2(");
flag=1;
fun(y);
printf(")");
}
else if(y==1)
{
if(flag==0)
printf("2");
else
printf("+2");
flag=1;
}
else if(y==0)
{
if(flag==0)
printf("2(0)");
else
printf("+2(0)");
flag=1;
}
x-=(int)pow(2,y);
}
return;
}
int main()
{//16385
int x=16385;
int y;
cin>>x;
int flag=0;
while(x>=1)
{
if(flag==1)
printf("+");
y=log(x)/log(2);//2^y;
if(y>1)
{
printf("2(");
fun(y);
printf(")");
flag=1;
}
else if(y==1)
{
printf("2");
}
else if(y==0)
{
printf("2(0)");
}
x-=(int)pow(2,y);
}
return 0;
}
上一篇: udp服务器的C语言实现