可以用一個變數紀錄目前Ugly Number總共出現幾次,出現過1500次Ugly Number就可以輸出答案了。
因為因數分解後只能有2、3、5,所以對每一個數字的檢查方式我是將它先除以2直到發現除以2會有餘數就除以3,再算到除以3有餘數就換5,再算到除以5有餘數就可以檢查它是不是Ugly Number了,如果經過前面的處理後它變成1就表示它是Ugly Number,就可以把出現的次數+1。
可以用一個變數紀錄目前Ugly Number總共出現幾次,出現過1500次Ugly Number就可以輸出答案了。
因為因數分解後只能有2、3、5,所以對每一個數字的檢查方式我是將它先除以2直到發現除以2會有餘數就除以3,再算到除以3有餘數就換5,再算到除以5有餘數就可以檢查它是不是Ugly Number了,如果經過前面的處理後它變成1就表示它是Ugly Number,就可以把出現的次數
#include<iostream>
#include<cmath>
using namespace std;
int main(void)
{
cin.tie(0);
std::ios::sync_with_stdio(false);
int n = 0;
int answer = 1;
int temp;
while (n <= 1500)
{
temp = answer;
while (temp % 2 == 0)
{
temp /= 2;
}
while (temp % 3 == 0)
{
temp /= 3;
}
while (temp % 5 == 0)
{
temp /= 5;
}
if (temp == 1)
{
n++;
if (n == 1500)
{
break;
}
}
answer++;
}
cout << "The 1500'th ugly number is " << answer << '\n';
return 0;
}
結果出現WA
是TLE嗎?
.
.
.
.
.
.
結果是輸出格式不對 笑死
可以用一個變數紀錄目前Ugly Number總共出現幾次,出現過1500次Ugly Number就可以輸出答案了。
因為因數分解後只能有2、3、5,所以對每一個數字的檢查方式我是將它先除以2直到發現除以2會有餘數就除以3,再算到除以3有餘數就換5,再算到除以5有餘數就可以檢查它是不是Ugly Number了,如果經過前面的處理後它變成1就表示它是Ugly Number,就可以把出現的次數+1。
那題目中的14呢?
可以用一個變數紀錄目前Ugly Number總共出現幾次,出現過1500次Ugly Number就可以輸出答案了。
因為因數分解後只能有2、3、5,所以對每一個數字的檢查方式我是將它先除以2直到發現除以2會有餘數就除以3,再算到除以3有餘數就換5,再算到除以5有餘數就可以檢查它是不是Ugly Number了,如果經過前面的處理後它變成1就表示它是Ugly Number,就可以把出現的次數+1。
那題目中的14呢?
抱歉看錯==