问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++ 蓝桥杯 求助 这道题该怎么做?

发布网友 发布时间:2023-06-24 19:30

我来回答

2个回答

热心网友 时间:2024-07-12 11:50

//写出来啦,测试通过,如果有疑问,欢迎交流
//用递归写这个题,有个感悟,应该一步一步的实现,而且刚开始不要关注细节处理
//(对2的输出)
//第一步先把:137可表示为:2(7)+2(3)+2(0) 实现了(见最后注释掉的部分)
//第二步:只要修改count的地方就可以了
#include<iostream>
using namespace std;

void print_binary2(int tar, int count){
if(tar==0)
return;
if(tar%2!=0){
if(tar!=1){
print_binary2(tar /2, count+1);
cout<<'+';
}
if(count == 1){
cout<<2;
}else{
cout<<2;
cout<<'(';
if(count == 0)
cout<<count;////////////
else
print_binary2(count, 0);
cout<<')';
}
}else{
print_binary2(tar /2, count+1);
}
}
int main(){
int cur_max_count = 0;
print_binary2(1315, 0);
return 0;
}

//First step
//void print_binary2(int tar, int count){
//if(tar==0)
//return;
//if(tar%2!=0){
//if(tar!=1){
//print_binary2(tar /2, count+1);
//cout<<'+';
//}
//cout<<2;
//cout<<'(';
//cout<<count;////////////
//cout<<')';
//}else{
//print_binary2(tar /2, count+1);
//}
//}

热心网友 时间:2024-07-12 11:50

提示是扯淡的。这题压根用不到递归。n的范围是0~20000 (就算是到64位也用不到,吃饱了撑的递归)



#include <iostream>
#include <vector>
#include <string>
using namespace std;
string fix[]=
{
"2(0)",//0
"",//1次不用输出
"2",//2
"2+2(0)",//3
"2(2)",//4
"2(2)+2(0)",//5
"2(2)+2",//6
"2(2)+2+2(0)",//7
"2(2+2(0))",//8
"2(2+2(0))+2(0)",//9
"2(2+2(0))+2",//10
"2(2+2(0))+2+2(0)",//11
"2(2+2(0))+2(2)",//12
"2(2+2(0))+2(2)+2(0)",//13
"2(2+2(0))+2(2)+2",//14
"2(2+2(0))+2(2)+2+2(0)"//15
};
vector<int> fenjie(int a)
{
vector <int>s;
while (a)
{
if(a%2)
s.push_back(1);
else
s.push_back(0);
a>>=1;
}
return s;
}

int main(void)
{
vector <int>s;
int n;
cin>>n;
if(n==1)
{
cout<<"2(0)"<<endl;
return 0;
}
if(n==2)
{
cout<<"2"<<endl;
return 0;
}
if(n==3)
{
cout<<"2+2(0)"<<endl;
return 0;
}
s = fenjie(n);
int i;
string outstr="";

for (i=s.size()-1;i>1;i--)
if(s[i])
outstr+="2("+fix[i]+")+";
if (s[1])
  outstr+="2+";
else 
outstr = outstr.substr(0,outstr.size()-1);//删掉"+"
if(s[0])
  outstr+=fix[0];
else if(s[1])
  outstr = outstr.substr(0,outstr.size()-1);//删掉"+"
  
cout<<outstr<<endl;
return 0;
}

追问有错的地方 所测试的数据不能完全通过 蓝桥杯

追答

哦 由于比较急 尾部处理没做好 ,你再试试这个:


#include <iostream>
#include <vector>
#include <string>
using namespace std;
string fix[]=
{
"2(0)",//0
"",//1次不用输出
"2",//2
"2+2(0)",//3
"2(2)",//4
"2(2)+2(0)",//5
"2(2)+2",//6
"2(2)+2+2(0)",//7
"2(2+2(0))",//8
"2(2+2(0))+2(0)",//9
"2(2+2(0))+2",//10
"2(2+2(0))+2+2(0)",//11
"2(2+2(0))+2(2)",//12
"2(2+2(0))+2(2)+2(0)",//13
"2(2+2(0))+2(2)+2",//14
"2(2+2(0))+2(2)+2+2(0)"//15
};
vector<int> fenjie(int a)
{
vector <int>s;
while (a)
{
if(a%2)
s.push_back(1);
else
s.push_back(0);
a>>=1;
}
return s;
}
int main(void)
{
vector <int>s;
int n;
cin>>n;
if(n==1)
{
cout<<"2(0)"<<endl;
return 0;
}
if(n==2)
{
cout<<"2"<<endl;
return 0;
}
if(n==3)
{
cout<<"2+2(0)"<<endl;
return 0;
}
s = fenjie(n);
int i;
string outstr="";
for (i=s.size()-1;i>1;i--)
if(s[i])
outstr+="2("+fix[i]+")+";
if(!s[1]&&!s[0])//00
outstr = outstr.substr(0,outstr.size()-1);//删掉"+"
else if(!s[1]&&s[0])//01
outstr +="2(0)";
else if(s[1]&&!s[0])//10
 outstr+="2";
else //11
outstr+="2+2(0)";
cout<<outstr<<endl;
return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
肺气肿吃什么食物最好 吃什么对肺气肿好 肺气肿老人吃什么水果好 世界乐坛唱功排行? 全球唱功排名? 全球唱功排名 MariahCarey与CelineDion谁唱歌唱得好些?或者谁的唱功较好? Mariah Carey 与 Celine Dion谁唱歌唱得好些?或者谁的唱功较好 国家水费多少钱一吨 国家水费标准是多少一吨?多少水才算一吨 水费是多少钱一吨 在国内有国际康复理疗证,怎样在新西兰注册 carf是什么意思 进阶英语综合教程3单元主题是什么 凤庆鸡枞属于哪里的特产 原神这本小说会很厉害任务冲突解决方法 原神折箭觅踪第二天任务攻略大全 原神璃月限时挑战攻略 ...八天原神折箭觅踪攻略第八天任务流程奇怪的丘丘人任务第八天完成方法... 原神辞行久远之躯指月任务怎么做原神辞行久远之躯指月任务通关流程... 智慧的美丽阅读答案 《智慧的美丽 》 阅读题答案 各位大仙帮帮忙 《智慧的美丽》阅读全部答案 智慧的美丽 阅读答案,急求啊~~~ 智慧的美丽 1主要内容 2从这件事中你体会到了什么3题目的理解 智慧的美丽5-8自然段主要内容 智慧的美丽理解 智慧的美丽题目什么意思啊? 智慧的美丽记述了一件什么事情? 智慧的美丽1主要内容2从文章中体会到什么3对题目的理解 希腊诸神十大栖居地:希腊的神仙都住在哪里 咽喉有异物感还不断打嗝是什么原因 白色葡萄球菌属于流感病毒吗? 采蜜集的拼音狐 采蜜集的拼音是什么 岳阳火车东站(高铁站)至巴陵汽车站(即老火车站出站右边200米左右的那 ... 岳阳东站距离最近的汽车站怎么走,有没有去通城的汽车? 路边房子有蜂鸣声 结婚证要填写哪些内容 ...人物,背景是深绿色的布,怎么把背景颜色换掉? 红花郎11年53度一瓶重多少克 华日白在抖音上为什么会火 抖音武汉珊姐是谁 带了地址的视频能投抖吗 U盘已经设置为第一启动,但是一直只显示一个小横杠,没反应,进不去_百度... 我把u盘当做启动盘装系统,进入bios用usb启动为什么只有一个小横杠在... 用U盘安装win7一开机只有左上角的横杠显示是怎么回事? 送你一朵小红花里面,男主角韦一航死了吗? 家用梯子那种类型的好,是人字梯好还是多功能梯子好呢,是铝合金的... 折叠梯的材质是铝合金好还是不锈钢好呢 杭州居民拎物资投喂大白,大白是怎么做的? 英雄使命手游什么武器好