• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            zoj3621

            http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3621

            Factorial Problem in Base K

            Time Limit: 2 Seconds      Memory Limit: 65536 KB

            How many zeros are there in the end of s! if both s and s! are written in base k which is not necessarily to be 10? For general base, the digit order is 0-9,A-Z,a-z(increasingly), for example F4 in base 46 is actually 694 in base 10,and f4 in base 46 is 1890 in base 10.

            Input

            There are multiple cases(less than 10000). Each case is a line containing two integers s and k(0 ≤ s < 2^63, 2 ≤ k ≤ 62).

            Output

            For each case, output a single line containing exactly one integer in base 10 indicating the number of zeros in the end of s!.

            Sample Input

            101 2 12 7 

            Sample Output

            3 1 

            Author: ZHANG, Debing
            Contest: ZOJ Monthly, June 2012

            zoj月賽題目,數(shù)據(jù)超強(qiáng)
            那個(gè)求一個(gè)數(shù)n的階乘的因式分解中k的個(gè)數(shù)的寫的要精彩,才不會(huì)wa
            code

            #include <cstdio>
            #include 
            <cstdlib>
            #include 
            <cstring>
            #include 
            <cmath>
            #include 
            <ctime>
            #include
            <stdio.h>
            #include 
            <cassert>
            #include 
            <iostream>
            #include 
            <sstream>
            #include 
            <fstream>
            #include 
            <map>
            #include 
            <set>
            #include 
            <vector>
            #include 
            <queue>
            #include 
            <algorithm>
            #include 
            <iomanip>
            #define maxn 205
            using namespace std;
            int hash[300];
            char str[maxn*10];
            long long k;
            int fen[105];
            int num[105],num1;
            long long sum[105];
            long long tmp;
            #define pp printf("here\n")
            long long  change(char str[])
            {
                
            int i,len;
                
            long long res;
                len
            =strlen(str);
                res
            =0;
                
            for( i=0; i<len; i++)
                {
                    res
            =res*k+hash[str[i]];
                }
                
            return res;
            }
            void fenjie()
            {
                
            int i;
                
            long long tmpx=k;
                memset(fen,
            0,sizeof(fen));
                memset(num,
            0,sizeof(num));
                num1
            =0;
                
            for(i=2; i<=k; i++)
                {
                    
            if(tmpx%i==0)
                    {
                        num1
            ++;
                        fen[num1]
            =i;
                        
            while(tmpx%i==0//這個(gè)地方,一定注意啊
                        {
                            num[num1]
            ++;
                            tmpx
            =tmpx/i;
                        }
                    }
                    
            if(tmpx==1break;
                }
            }
            long long  min(long long a,long long  b)
            {
                
            return a<b?a:b;
            }
            long long  chuli()
            {
                
            int i;
                
            long long tmp1;
                
            long long sumn;
                
            long long xx;
                memset(sum,
            0,sizeof(sum));
                
            for( i=1; i<=num1; i++)
                    
            if(num[i]!=0&&fen[i]!=0)
                    {
                      
            //  printf("%d %d\n",fen[i],num[i]);
                        xx=fen[i];
                        sumn
            =0;
                        tmp1
            =tmp;
                        
            while(xx<=tmp1)
                        {
                            sumn
            =sumn+tmp1/xx;
                            tmp1
            =tmp1/xx;
                        }
                        sum[i]
            =sumn;
                    }
                
            long long res=sum[1]/num[1];
                
            for( i=2; i<=num1; i++)
                  
            //  if(num[i]!=0&&fen[i]!=0)
                        res=min(res,sum[i]/num[i]);
                
            return res;
            }
            int main()
            {
                
            int i;
                
            for( i=0; i<=9; i++)
                {
                    hash[i
            +'0']=i;
                    
            //printf("%c,%d\n",i+'0',i);
                }
                
            for( i=0; i<26; i++)
                {
                    hash[i
            +'A']=i+10;
                    
            // printf("%c,%d\n",i+'A',i+10);
                }
                
            for(i=0; i<26; i++)
                {
                    hash[i
            +'a']=i+36;
                    
            // printf("%c,%d\n",i+'a',i+36);
                }
                
            while(scanf("%s%d",str,&k)!=EOF)
                {
                    tmp
            =change(str);
                    
            // pp;
                    
            // printf("%I64u\n",tmp);
                    if(tmp!=0)
                    {
                        fenjie();
                        
            //   pp;
                      
            // for(i=1;i<=num1;i++)
                        
            //printf("%d %d\n",fen[i],num[i]);
                        long long  ans=chuli();
                        printf(
            "%lld\n",ans);
                    }
                    
            else
                    {
                        printf(
            "0\n");
                    }
                }
                
            return 0;
            }

            posted on 2012-07-30 21:49 jh818012 閱讀(130) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評(píng)論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當(dāng)于是 取余3的意思 因?yàn)?3 的 二進(jìn)制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
            • --王私江
            欧美精品九九99久久在观看| 亚洲精品无码专区久久同性男| 久久只这里是精品66| 精品久久久久久久久久中文字幕 | 性做久久久久久久久久久| 成人亚洲欧美久久久久| 麻豆久久| 久久综合亚洲鲁鲁五月天| 99久久国产热无码精品免费 | 人妻少妇久久中文字幕| 狠狠精品干练久久久无码中文字幕 | 久久精品成人| 三级三级久久三级久久| 日韩精品久久久肉伦网站| 99久久精品免费观看国产| 久久亚洲中文字幕精品一区| 久久香综合精品久久伊人| 国产精品伦理久久久久久| 久久久久亚洲av综合波多野结衣| 久久99国产精品久久| 国产成人精品久久综合 | 色播久久人人爽人人爽人人片aV| 人妻中文久久久久| 日本强好片久久久久久AAA| 久久96国产精品久久久| 人妻精品久久无码区| 狠狠色丁香婷婷久久综合| 青青青青久久精品国产h| 亚洲人成网亚洲欧洲无码久久| 国产亚洲美女精品久久久久狼| 久久久人妻精品无码一区 | 久久无码av三级| 久久综合亚洲鲁鲁五月天| 日韩亚洲欧美久久久www综合网| 人妻精品久久久久中文字幕69| 久久久久噜噜噜亚洲熟女综合| 东京热TOKYO综合久久精品| 久久久久免费精品国产| 亚州日韩精品专区久久久| 99久久精品免费看国产一区二区三区| 久久久久亚洲AV无码麻豆|