由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教中文OJ一道题
相关主题
给定一个数组,找出3个数乘积最大。也来道题吧
弱弱的问问 2sum, 3sum 的问题问道微软面试DP题
m家面经问道数组元素连续相乘的名题
讨论一道算法一个N个数的int数组如何找到3个majority的数?
给定整数数组和两个整数的和,求所有pair。amazon问题求教
问一道在sorted array里search的问题亚马逊电话面经
问一道面试题2道面试题.
回文数的问题问一道google的面试题
相关话题的讨论汇总
话题: int话题: num%话题: count话题: return话题: 返回
进入JobHunting版参与讨论
1 (共1页)
g***9
发帖数: 159
1
给定一个非负整数a(不超过106),是否存在整数b,使得a和b的乘积全为1。如果存在
,返回最小的乘积的位数。如果不存在,返回-1。
样例:a=3,存在b=37,使得3*37=111,则函数应返回3(111的位数)。
求指点,感谢!
f****e
发帖数: 34
2
主要使用公式(x*10+1)%y=((x%y)*10+1)%y
比如a=3,你计算了11%3,马上就可以算出111%3,继续可以算出1111%3...
所以可以枚举1的位数,那要枚举多少位呢?最多a位,
因为x%a不会超过a,如果枚举过程中同一个模出现2次,那么根据上面的公式,就出现
循环节了,返回-1.
具体实现的时候可以开一个大小为a的bool数组

【在 g***9 的大作中提到】
: 给定一个非负整数a(不超过106),是否存在整数b,使得a和b的乘积全为1。如果存在
: ,返回最小的乘积的位数。如果不存在,返回-1。
: 样例:a=3,存在b=37,使得3*37=111,则函数应返回3(111的位数)。
: 求指点,感谢!

z***y
发帖数: 50
3
其实不需要额外来的bool数组.
int findMinAllOne(int a) {
if(a==0) return -1;
int num = 1;
int count = 1;
int r = num%a;
int t = 0;
while(r && t < a){
num = r*10+1;
r = num%a;
t++;
count++;
}
if(r) return -1;
return count;
}

【在 f****e 的大作中提到】
: 主要使用公式(x*10+1)%y=((x%y)*10+1)%y
: 比如a=3,你计算了11%3,马上就可以算出111%3,继续可以算出1111%3...
: 所以可以枚举1的位数,那要枚举多少位呢?最多a位,
: 因为x%a不会超过a,如果枚举过程中同一个模出现2次,那么根据上面的公式,就出现
: 循环节了,返回-1.
: 具体实现的时候可以开一个大小为a的bool数组

f****e
发帖数: 34
4
对,不过用数组标记一下的话 对于无界的情况可以尽早结束枚举。

【在 z***y 的大作中提到】
: 其实不需要额外来的bool数组.
: int findMinAllOne(int a) {
: if(a==0) return -1;
: int num = 1;
: int count = 1;
: int r = num%a;
: int t = 0;
: while(r && t < a){
: num = r*10+1;
: r = num%a;

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一道google的面试题给定整数数组和两个整数的和,求所有pair。
问两道题目(算法和开放问题)问一道在sorted array里search的问题
A电面问一道面试题
求解一道数组找最大cycle长度的问题回文数的问题
给定一个数组,找出3个数乘积最大。也来道题吧
弱弱的问问 2sum, 3sum 的问题问道微软面试DP题
m家面经问道数组元素连续相乘的名题
讨论一道算法一个N个数的int数组如何找到3个majority的数?
相关话题的讨论汇总
话题: int话题: num%话题: count话题: return话题: 返回