社区
C++ 语言
帖子详情
这道算法题怎么做?
yjcq
2006-05-22 10:24:08
输入二个整数C,M。(C>1)(M可以很大,小于10^1000)
问M能否用C的幂集(C^0, C^1, C^2, ..., C^i )中的元素相加得到,如能得到,返回需要的C的幂集中的元素的个数,如不能,返回-1
如输入2 63 得到6
如输入10 11111111111111111111 得到20
...全文
231
5
打赏
收藏
这道算法题怎么做?
输入二个整数C,M。(C>1)(M可以很大,小于10^1000) 问M能否用C的幂集(C^0, C^1, C^2, ..., C^i )中的元素相加得到,如能得到,返回需要的C的幂集中的元素的个数,如不能,返回-1 如输入2 63 得到6 如输入10 11111111111111111111 得到20
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yjcq
2006-05-23
打赏
举报
回复
应该用贪心算法, 先用一个最大的可能幂去减W,
如何找到一个最大的可能幂呢?W可能很大,要用到大整数的乘法吗?
femalelover
2006-05-22
打赏
举报
回复
我晕,还设什么开关,分治法这里不适用,差点误导人了.
应该用贪心算法, 先用一个最大的可能幂去减W,这个幂就是当前最优,再求次大的幂...;这算是一轮,一轮下来,可能匹配失败, 失败的话,再用次大幂作当前最优解,求....找到为止,最后必须有重复时,则求解失败.
去网上搜答案,应该不难,时间复杂度是O(N^2).
jiayu7_7
2006-05-22
打赏
举报
回复
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
int c;
bool flag=true;
long double m,k(0);
cin>>c>>m;
while(flag)
{
if(m<pow(c,k)&&int(m)!=0)
{
cout<<"no"<<endl;
break;
}
else if(m<pow(c,k))
{
cout<<k<<endl;
break;
}
m=m-pow(c,k);
k++;
}
}
试试行不????
femalelover
2006-05-22
打赏
举报
回复
由于你的W值多大未定义,所以可以设置一个开关,当W不大于某个数时,如10^4,就用穷举法,递归求解; 大于开关时,用分治法,效率肯定很高.
femalelover
2006-05-22
打赏
举报
回复
楼主的提法可能有点问题,如果允许C的幂重复出现,则C^0=1,故总是可返回一个答案.
如果不允许重复.....我想想.
2021年刷这600多道
算法
题
,轻松进大厂
想了解更多数据结构以及
算法
题
,可以关注微信公众号“数据结构和
算法
”,每天一
题
为你精彩解答。也可以扫描下面的二维码关注 大家好,我叫博哥,喜欢编程,尤其是喜欢
算法
,沉迷其中不能自拔,近3年来坚持在公众号上写
算法
题
解,总共输出了400多道
题
,其中不乏一些经典
题
型,都是以图文结合的方式,让
算法
变的不那么枯燥,通过这些文章,可以让你轻松入门。今天闲着没事就把之前写的一部分
算法
题
整理出来,方便大家阅读,如果你觉得不错的话还可以点击收藏。 「可以看下部分系列文章:」 动态规划相关
算法
递归和动态规划解三角形最小路径
13 道典型 Java 面试
算法
题
及解答
思路:首先需要了解正则表达式,\d 表示数字。{n,m}表示字符个数。可以使用正则表达式从第6位之后开始截取 8 位即可取出年月日。// 测试是否为合法的身份证号码 String [ ] strs = {i ++) {// 用于提取出生日字符串 Pattern p3 = Pattern . compile("(\\d{4})(\\d{2})(\\d{2})");// 用于将生日字符串进行分解为年月日 for(int i = 0;
前端面试必备-40道LeetCode经典面试
算法
题
2019年马上就要结束了,相信很多童鞋都开始蠢蠢欲动了,寻找新的机会了,但是工作太忙没有时间刷
算法
题
,面试的时候好心虚。这里双手奉上40道LeetCode上经典面试
算法
题
,整理的内容有点长,建议先收藏,慢慢消化,在来年顺利拿到满意的offer。 内容较多,整理不易,希望大家关注公众号【前端】,更多优质前端原创好文。 [LeetCode] 两数之和 给定一个整数数组和一个目标值,找出数组中和为...
刷了 1000 多道
算法
题
,一点心得
大家好,我是鱼皮,今天分享一下自己刷
算法
题
目的经验。 程序员为啥要刷
算法
? 因为 “卷啊”! 开个玩笑,其实,
算法
题
目已经成为了公司筛人的一种方式,大厂的每一轮面试基本都会有几道
算法
题
,甚至有的公司笔试全部都是
算法
题
。其他
题
目答的都差不多,那你
算法
题
做
不出来,可能就被淘汰了。 所以为啥要刷
算法
题
呢?一方面是帮助你学习和理解
算法
,但另一方面也是像背公式、背八股文一样,增加你面试时碰到原
题
的概率。我刷了 1000 多道
题
嘛,不夸张的说,在面试的时候 80% 的
算法
题
都是原
题
。 当然,每个人学
算法
、刷
题
的目标是不
二叉树
算法
题
后,我们了解了二叉树的相关概念和性质,并且实现了顺序结构二叉树——堆和链式结构二叉树,那么在本篇中我们就来试着解决一些二叉树相关的
算法
题
,相信通过这些练习之后你会对二叉树有更深的理解。在之前二叉树的相关章节(
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章