- /****************##### بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم #####******************
- __________________________________________________________________________
- ###################### Ya-Seen Arafat(ACWizard) #########################
- ###################### UAP-CSE-33B #########################
- *************************************************************************/
- #include <bits/stdc++.h>
- #define M 1000003
- #define S 1000003
- #define LL long long
- using namespace std;
- int n;
- int BS(int h, int l){
- int p, q, m, f = 0;
- while(h >= l){
- p = h+l;
- if(p&1)p += 5;
- m = p/2;
- q = m;
- if(f == m)return -1;
- f = m;
- int ans = 0;
- while(q > 0){
- ans += q/5;
- q /= 5;
- }
- if(ans == n)return m;
- else if(ans > n)h = m;
- else l = m;
- }
- return -1;
- }
- int main(){
- int t, cs = 0;
- scanf("%d", &t);
- while(t--){
- scanf("%d", &n);
- int high = 5*n;
- int low = 5;
- int a = BS(high, low);
- printf("Case %d: ", ++cs);
- printf((a < 0)?"impossible\n":"%d\n", a);
- }
- return 0;
- }
Friday, March 11, 2016
LightOJ - 1138 - Trailing Zeroes (III)
LightOJ - 1090 - Trailing Zeroes (II)
- /****************##### بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم #####******************
- __________________________________________________________________________
- ###################### Ya-Seen Arafat(ACWizard) #########################
- ###################### UAP-CSE-33B #########################
- *************************************************************************/
- #include <bits/stdc++.h>
- #define M 1000003
- #define S 1000003
- #define LL long long
- using namespace std;
- int find_p(int a, int b){
- int cn = 0;
- while(a > 0){
- cn += (a/b);
- a /= b;
- }
- return cn;
- }
- int find_pr(int a, int b){
- int cn = 0;
- while(!(a%b)){
- cn++;
- a /= b;
- }
- return cn;
- }
- int main(){
- int t, n, r, p, q, c, cs = 0;
- scanf("%d", &t);
- while(t--){
- scanf("%d %d %d %d", &n, &r, &p, &q);
- c = n-r;
- int five_up = 0, five_down = 0, two_up = 0, two_down = 0;
- five_up = find_p(n, 5);
- two_up = find_p(n, 2);
- five_down = find_p(c, 5);
- five_down += find_p(r, 5);
- two_down = find_p(c, 2);
- two_down += find_p(r, 2);
- five_up += (q*find_pr(p, 5));
- two_up += (q*find_pr(p, 2));
- int five, two;
- five = five_up-five_down;
- two = two_up-two_down;
- int ans = min(five, two);
- printf("Case %d: %d\n", ++cs, ans);
- }
- return 0;
- }
Sunday, February 28, 2016
LightOJ - 1077 - How Many Points?
- /****************##### بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم #####******************
- __________________________________________________________________________
- ###################### Ya-Seen Arafat(ACWizard) #########################
- ###################### UAP-CSE-33B #########################
- *************************************************************************/
- #include <bits/stdc++.h>
- #define M 1000003
- #define S 1000003
- #define LL long long
- using namespace std;
- int main(){
- int t, cs = 0;
- LL x1, x2, y1, y2;
- LL a, b;
- scanf("%d", &t);
- while(t--){
- scanf("%lld %lld %lld %lld", &x1, &y1, &x2, &y2);
- LL p, q;
- if(x1 < 0 && x2 < 0)p = abs(abs(x1)-abs(x2));
- else if(x1 >= 0 && x2 >= 0)p = abs(x1-x2);
- else if(x1 < 0 && x2 >= 0)p = abs(x1)+x2;
- else p = x1+abs(x2);
- if(y1 < 0 && y2 < 0)q = abs(abs(y1)-abs(y2));
- else if(y1 >= 0 && y2 >= 0)q = abs(y1-y2);
- else if(y1 < 0 && y2 >= 0)q = abs(y1)+y2;
- else q = y1+abs(y2);
- LL ans = __gcd(p, q)+1;
- printf("Case %d: %lld\n", ++cs, ans);
- }
- return 0;
- }
LightOJ - 1067 - Combinations
- /****************##### بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم #####******************
- __________________________________________________________________________
- ###################### Ya-Seen Arafat(ACWizard) #########################
- ###################### UAP-CSE-33B #########################
- *************************************************************************/
- #include <bits/stdc++.h>
- #define M (long long)1000003
- #define S 1000003
- #define LL long long
- using namespace std;
- LL factorial[M+3];
- void findFact(){
- factorial[0] = 1;
- for(int i = 1; i < S; i++){
- factorial[i] = factorial[i-1] * i;
- factorial[i] %= M;
- }
- }
- LL modInverse(LL a, LL p){
- if(p == 0)return 1LL;
- else if(p%2)return ((a%M)*(modInverse(a, p-1)%M))%M;
- else{
- LL x = modInverse(a, p/2);
- return (x%M*x%M)%M;
- }
- }
- int main(){
- memset(factorial, 1LL, sizeof(factorial));
- findFact();
- int t, cs = 0;
- LL n, k;
- scanf("%d", &t);
- while(t--){
- scanf("%d %d", &n, &k);
- LL y = factorial[n];
- LL z = (factorial[n-k]%M*factorial[k]%M)%M;
- LL ans = modInverse(z, M-2LL);
- ans = (y%M*ans%M)%M;
- printf("Case %d: %lld\n", ++cs, ans);
- }
- return 0;
- }
LightOJ - 1045 - Digits of Factorial
- /****************##### بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم #####******************
- __________________________________________________________________________
- ###################### Ya-Seen Arafat(ACWizard) #########################
- ###################### UAP-CSE-33B #########################
- *************************************************************************/
- #include <bits/stdc++.h>
- #define ll long long
- #define S 1000003
- using namespace std;
- double cuS[S];
- void cumulativeSum(){
- cuS[1] = log((double)1);
- for(int i = 2; i < S; i++){
- cuS[i] = cuS[i-1] + log((double)i);
- }
- }
- int main(){
- int t, cs = 0, n, base;
- cumulativeSum();
- scanf("%d", &t);
- while(t--){
- scanf("%d %d", &n, &base);
- double value = cuS[n];
- value /= log((double)base);
- ll ans = value;
- ans += 1;
- printf("Case %d: %lld\n", ++cs, ans);
- }
- return 0;
- }
LightOJ - 1035 - Intelligent Factorial Factorization
- /****************##### بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم #####******************
- __________________________________________________________________________
- ###################### 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;
- }
Subscribe to:
Posts (Atom)