马骁博
(马骁博)
1
以下是给这个分组的一个模板发帖:
这是xx比赛的第x题
题目描述:
输入一个 n 。请你按照以下规则输出序列:
设输出这一序列的过程为 F(n)
如果 n 是 1 ,那么输出 1 并返回。
否则,先执行 F([n/2]) ,再输出 n,再执行 F(n-[n/2])
这里中括号的意思是下取整
#include<bits/stdc++.h>
using namespace std;
long long f(long long x)
{
if(x == 1)
{
cout << 1;
return 1;
}
else
{
return f(floor(x / 2));
cout << x << " ";
return f(x-floor(x / 2));
}
}
int main()
{
int n;
cin >> n;
f(n);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
long long f(long long x)
{
if(x == 1)
{
cout << 1;
return 1;
}
else
{
f(x / 2);
cout << x << " ";
f(x-x / 2);
}
}
int main()
{
int n;
cin >> n;
f(n);
return 0;
}
2 个赞
long long除法就是向下取整floor也可以去掉
1 个赞
tyx
(༺༺■̵̶̸̸̴̴̷̩͎̬͍̙͎͕͎̩͍͇̜͍̯̖͎̙͓̪͎͓̜̟͖͈̩͈̜̮̝̠̫̠͉̘̳̳̦͈͇̖͓̩͙̩̤͇̠̠̣͔͕̲͍̪̮̥̗̦͍͇͍͖̟͔͔̲̜̗̱̤̲̤̱̝̟͇̖͔̮͙̣͚̗̣̤̱͇͖̪͚͉̜̫̤̮͎̖̥͙̜̖̞̥͔͍̳͙̉̃̀͑͗͋̾̔̓̄̆̐̾͊̐̀̆̆̋̎̂̓̈̆̑͋͛̐̍̾̎͐̈́͋̌̾̓̌̂̿͗̂̂͗̊̇͛̾̋͂͒̉̿̾̽͛̈́̍̋͗̐͒͂̊̾͒̃̎̇͐̎̇́̅̈́͂̋̑͒́̓͆̅̓͌͗͋̏͒̽̒̉̂̔̒͆̊̐̀̈́̀͒̽̚̚ͅͅ҉再见,匹诺康尼_C++CodeIkun༻༻)
5
long long的f也可以改成void,然后cout<<1要加空格
1 个赞