PAT乙級——1087(陣列操作,輔助空間)java實現
阿新 • • 發佈:2018-12-08
題目: 有多少不同的值 (20 分)
當自然數 n 依次取 1、2、3、……、N 時,算式 有多少個不同的值?(注: 為取整函式,表示不超過 x 的最大自然數,即 x 的整數部分。)
輸入格式:
輸入給出一個正整數 N(2 ≤ N ≤ 104)。
輸出格式:
在一行中輸出題面中算式取到的不同值的個數。
輸入樣例: 2017 輸出樣例: 1480
題目分析及實現
取整操作既可以理解為除法操作,將結果儲存為int型時,會自動取整。
採用輔助空間的辦法,N計算的最大值大概是 ,為了方便,將輔助陣列的最大值設為了 。
計算出了值後,將之對應下標位置的元素置為1,最後數一下1的個數即為結果。
import java.util.Scanner;
public class Main {
public static void main(String []args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
in.close();
int temp[] =new int[N*2];//輔助陣列空間
for(int i=1;i<=N;i++) {
//從1到N依次計算
int count =i/2 + i/3 + i/5;
temp[count]=1;
}
int time=0;
for(int i=0;i<2*N;i++) {
if(temp[i]==1)
++time;
}
System.out.print(time);
}
}