Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int i,j;
- int mulai=2;
- long long int arr[1000001];
- // mirip algo sieve, bedanya menghitung total faktorial tiap angka
- void faktor(int batas){
- for(i=mulai;i<=1000000;i++){
- j=1; // mulai dari faktor bilangan terkecil
- while(i*j<=1000000){
- arr[i*j]+=j; //menjumlah tiap faktorial pada tiap angka
- j++;
- }
- arr[i]+=arr[i-1]; // rumus pada soal
- if(i==batas){ // membatasi looping
- mulai = i+1;
- break;
- }
- }
- }
- int main(){
- short Tcase;
- int angka;
- cin >> Tcase;
- while(Tcase--){
- cin >> angka;
- if(angka > (mulai-1)) faktor(angka); // loop faktorial
- cout << arr[angka]<<endl;
- } return 0;
- }
Add Comment
Please, Sign In to add comment