// Because I didn't understand the meaning of uugly number wa twice, it's okay to have discuss .... <br/> // In ugly_num, each number must be multiplied by 2, 3, and 5 based on the existing number. <br/> // For example, 14 is not ugly_num because 7*2 = 14, but 7 is not in ugly_num <br/> # include <iostream> <br/> using namespace STD; <br/> long ugly_num [1501]; <br/> int pfactor2, pfactor3, pfactor5, N; <br/> int main () <br/>{< br/> pfactor2 = pfactor3 = pfactor5 = 1; // assign an array subscript pointer to each factor, and shift one right position each time the minimum value is obtained <br/> ugly_num [1] = 1; <br/> for (INT I = 2; I <= 1500; I ++) <br/> {<br/> ugly_num [I] = min (ugly_num [pfactor2] * 2, min (ugly_num [pfactor3] * 3, ugly_num [pfactor5] * 5); <br/> If (ugly_num [I] = ugly_num [pfactor2] * 2) <br/>{< br/> pfactor2 ++; <br/>}< br/> If (ugly_num [I] = ugly_num [pfactor3] * 3) <br/>{< br/> pfactor3 ++; <br/>}< br/> If (ugly_num [I] = ugly_num [pfactor5] * 5) <br/>{< br/> pfactor5 ++; <br/>}< br/> while (scanf ("% d", & n )) <br/> {<br/> If (n = 0) break; <br/> printf ("% LD/N", ugly_num [N]); <br/>}< br/> return 0; <br/>}