面試題32 在從1到n的正數中1出現的次數

2021-07-11 14:40:43 字數 790 閱讀 4853

1、方法一:

class solution1 

n=n/10;

}return cnt;

}int numberof1between1andn_solution(int n)

return cnt;

}};

2、方法二

使用遞迴的思路

class solution2 else

if(1==len && first_digit>0)

int num_recursive=numberof1(strn+1);

int num_other=first_digit*(len-1)*pow(10,len-2);

//乘以first_digit是因為,以2為例,可以取值0和2,是兩個;以3為例,可以取值0,2,3,是三個;

//1出現在第一位之外的其他位,其餘的位數字在0到9這10個數字任意選擇,由排列組合可以得出總次數

int num_first_digit=0;

if(first_digit>1)else

if(first_digit==1)

return num_first_digit+num_other+num_recursive;

}int numberof1between1andn_solution(int n)

char strn[32];

sprintf_s(strn,"%d",n);

return numberof1(strn);

}};

在從1到n的正數中1出現的次數

題目 輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。我的思路是計算每一位上1會出現在哪些數字中。建乙個陣列a n 放置每一位,從個位到最高位,0 n,這裡n 4。a 0 5,a 1 0,a ...

在從1到n的正數中1出現的次數

int count1in1ton int n return n int countnumber1 int n return count 程式設計之美上的方法 大體的思路是這樣的 假設n abcde,這裡a,b,c,d,e分別是十進位制數n的各個位數上的數字。如 果要計算百位上出現1的次數,它會受到三...

求在從1到n的正數中1出現的次數

題目 輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。問題描述 給定乙個十進位制正整數n,寫下從1開始,到n的所有整數,然後數一下其中出現的所有 1 的個數。例如 n 2,寫下1,2。這樣只出...