Java 有多少个基数b使得数字的基数b表示以1开头?
问题陈述是: 问题陈述-:Altaf最近学习了数字基础,并开始着迷 Altaf了解到,对于大于10的基数,需要引入新的数字符号,惯例是使用英语字母表的前几个字母。例如,在基数16中,数字为0123456789ABCDEF。阿尔塔夫认为这是不可持续的;英语字母表只有26个字母,所以这个方案只能使用36个底数。但这对Altaf来说并没有问题,因为Altaf非常有创造力,只要她需要,就可以发明新的数字符号。(Altaf非常有创意。) Altaf还注意到,在基数2中,所有正整数都以数字1开头!然而,这是唯一正确的基础。很自然,Altaf想知道:给定一个整数N,有多少个基数b使得N的base-b表示以1开头 输入格式: 输入的第一行包含一个整数T,表示测试用例的数量。T测试用例的描述如下。 每个测试用例由一行组成,其中包含一个整数N(以十为底)。 输出格式: 对于每个测试用例,输出一行,其中包含基数b,如果基数为无穷多,则输出无穷多。 限制条件:Java 有多少个基数b使得数字的基数b表示以1开头?,java,for-loop,while-loop,integer,long-integer,Java,For Loop,While Loop,Integer,Long Integer,问题陈述是: 问题陈述-:Altaf最近学习了数字基础,并开始着迷 Altaf了解到,对于大于10的基数,需要引入新的数字符号,惯例是使用英语字母表的前几个字母。例如,在基数16中,数字为0123456789ABCDEF。阿尔塔夫认为这是不可持续的;英语字母表只有26个字母,所以这个方案只能使用36个底数。但这对Altaf来说并没有问题,因为Altaf非常有创造力,只要她需要,就可以发明新的数字符号。(Altaf非常有创意。) Altaf还注意到,在基数2中,所有正整数都以数字1开头!然而,这是
1我不确定我是否遵循了循环中的逻辑(而且,据你自己承认,这里有一个问题) 循环的逻辑(即,“有多少个基表示N,以1开始表示”)可以大大简化 第一步是找到表示数字N所需的基数B的最高幂。这由logb(N)给出,截断为最接近的整数。Java没有带变量基的内置日志函数,但您可以通过计算log(n)/log(b)得到这个结果。
然后,你需要找到这个位置的数字。这可以通过使用整数除法将N除以b功率来计算。
从那以后,您只需要检查结果是否为1,如果是,则记录它 把它们放在一起,你会得到这样的结果:
private static int howmanybasessstartwithone(int num){
整数计数=0;
对于(int i=2;我非常感谢您!它工作正常,现在我将理解代码,再次感谢您。
4
6
9
11
24
4
7
8
14
import java.util.*;
public class MyClass {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
long n,i,j,k,m;
long count=0,rem1,index;
long rem[];
rem = new long[(int)100];
int t = sc.nextInt();
for(i=1;i<=t;i++)
{
n = sc.nextInt();
j=2;
while(j<=n)
{
// for(j=2;j<=n;j++)
// {
index=0;
m = j;
while(n>0)
{
rem1 = n%m;
rem[(int)index++] = rem1;
n = (long) (n / m);
}
// for(k=index-1;k>=0;k--)
// {
if(rem[1]==1)
{
count++;
}
// }
j++;
}
System.out.println(count);
// }
}
}
}