- /****************##### بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم #####******************
- __________________________________________________________________________
- ###################### Ya-Seen Arafat(ACWizard) #########################
- ###################### UAP-CSE-33B #########################
- *************************************************************************/
- #include <bits/stdc++.h>
- #define ll long long
- #define S 103
- using namespace std;
- int prime[S];
- int primeNum[S];
- int ans[S];
- int ind;
- void seive(){
- int sqr = sqrt(S);
- for(int i = 2; i <= sqr; i++){
- if(prime[i]){
- for(int j = i+i; j < S; j+=i)prime[j] = 0;
- }
- }
- ind = 0;
- for(int i = 2; i < S; i++)if(prime[i])primeNum[ind++] = i;
- }
- void numDivisor(int number){
- int cn = 0;
- for(int i = 0; i < ind; i++){
- for(int k = 2; k <= number; k++){
- while(prime[k]%primeNum[i] == 0){
- cn++;
- prime[k] /= primeNum[i];
- }
- ans[primeNum[i]] += cn;
- cn = 0;
- }
- }
- }
- int main(){
- int t, cs = 0, n;
- memset(prime, 1, sizeof(prime));
- seive();
- scanf("%d", &t);
- while(t--){
- scanf("%d", &n);
- memset(ans, 0, sizeof(ans));
- for(int i = 2; i < S; i++)prime[i] = i;
- numDivisor(n);
- printf("Case %d:", ++cs);
- bool flag = true;
- for(int i = 2; i <= 100; i++){
- if(ans[i] && flag)printf(" %d = %d (%d)", n, i, ans[i]), flag = false;
- else if(!flag && ans[i])printf(" * %d (%d)", i, ans[i]);
- }
- puts("");
- }
- return 0;
- }
Sunday, February 28, 2016
LightOJ - 1035 - Intelligent Factorial Factorization
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment