放弃的blog
C++博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

TJU2845(Factorial )

   2009-05-11 14:07:04 Accepted 2845 C++ 0.8K 0'00.00" 1204K
   本题意为求n!的b进制末尾有几个0.
   一开始猛然想到ZOJ上有一题也是求Factorial的,不过只是对于10进制而言。
   网址:
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1022
   对于任意进制的求法没碰到过。回想当初这题是每次除5往上加,因为对于十进制末尾的0始终是有5 * 2得到的,而2的个数绝对比5多,故只需计算5的个数即可。
   后来QQ上问了才知道,对于b进制,每次都需要求b的质因子,然后以n去除b的某个质因子,再每次往上加,对这么多结果中取一个最小值即可。
   取质因子可以这么写

   

int get_small_ans(int n, int b)
{
    bool flag = true;
    int cnt, ans = 0;
    int i;

    for(i = 2; i * i <= b; i++)
    {
        cnt = 0;
        while(b % i == 0)
        {//每次去进制的质因子
            b /= i;
            cnt++;
        }

        if(cnt)
        {
            if(flag)
            {
                ans = get_ans(n, i) / cnt;
                flag = false;
            }
            else //取进制质因子中的最小一个
                ans = min(ans, get_ans(n, i) / cnt);
        }

    }

    if(b > 1)
    {    
        if(flag)
            ans = get_ans(n, b);
        else
            ans = min(ans, get_ans(n, b));
    }
    return ans;
}

   每次用n除b的质因子往上加时这样写的

int get_ans(int n, int b)
{
    int sum = 0;

    while(n / b)
    {
        sum += n / b;
        n /= b;
    }
    return sum;
}
posted @ 2009-05-11 14:36 放弃的blog 阅读(214) | 评论 (0) | 编辑 收藏
 
HDOJ1720(ACboy needs your help again!)

2009-05-10 20:35:10 Accepted 1702 15MS 272K 937 B C++
水题,模拟栈和队列

posted @ 2009-05-10 20:38 放弃的blog 阅读(305) | 评论 (1) | 编辑 收藏
 
ZOJ2091(Mean of Subsequence)
/*
 2009-05-10 18:35:22 Accepted  2091 C++ 80 216
    -- by Xredman
*/
      题目意思的正确理解应当是,从任意位置开始一直取到末尾,然后求其平均值,把这n个平均值中取最大的一个输出。一开始没理解题意,WA了n次。
      如Sample:
      10
      2 10 4 6 5 10 10 2 3 2
      取
         <1> (2 + 10 + 4 + 6 + 5 + 10 + 10 + 2 + 3 + 2 ) / 10
         <2>(10 + 4 + 6 + 5 + 10 + 10 + 2 + 3 + 2) / 9
         <3>( 4 + 6 + 5 + 10 + 10 + 2 + 3 + 2) / 8
         <4>( 6 + 5 + 10 + 10 + 2 + 3 + 2) / 7
         <5>(5 + 10 + 10 + 2 + 3 + 2) / 6
         <6>(10 + 10 + 2 + 3 + 2) / 5
         <7>(10 + 2 + 3 + 2) / 4
         <8>(2 + 3 + 2) / 3
         <9>( 3 + 2) / 2
         <10>2 / 1
      在这10个数里取一个最大值输出即可
posted @ 2009-05-10 18:53 放弃的blog 阅读(284) | 评论 (0) | 编辑 收藏
 
HDOJ1711(Number Sequence)
 2009-05-10 11:04:54 Accepted 1711 515MS 4192K 944 B C++
KMP算法最普通的运用
posted @ 2009-05-10 11:10 放弃的blog 阅读(262) | 评论 (0) | 编辑 收藏
 
POJ3461(Oulipo)
/*
 POJ3461(Oulipo)
 Accepted 5108K 141MS C++ 901B 2009-05-10 09:48:46
  by Xredman
*/
 本题为纯粹的KMP算法,其变化仅在于返回值不是匹配串首次在模式串中出现的位置,而是匹配串在模式串中出现的次数。
posted @ 2009-05-10 10:00 放弃的blog 阅读(227) | 评论 (0) | 编辑 收藏
 
仅列出标题
共5页: 1 2 3 4 5 
随笔:21 文章:0 评论:2 引用:0
<2025年7月>
日一二三四五六
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

公告

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿(1)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • bfs (rss)
  • dfs (rss)
  • dp (rss)
  • HDOJ(6) (rss)
  • POJ(3) (rss)
  • SPOJ(3) (rss)
  • ZOJ(6) (rss)
  • 并查集(2) (rss)
  • 大数(1) (rss)
  • 模拟(1) (rss)
  • 排序 (rss)
  • 其它OJ(1) (rss)
  • 数论(3) (rss)
  • 图论(3) (rss)
  • 杂题(6) (rss)
  • 资料(1) (rss)
  • 字符串(2) (rss)

随笔档案

  • 2009年6月 (1)
  • 2009年5月 (20)

我的链接

  • Xredman代码驿站
  • Xredman资料搜集站
  • 福娃免费空间

搜索

  •  

积分与排名

  • 积分 - 7412
  • 排名 - 1346

最新评论

  • 1. re: HDOJ1720(ACboy needs your help again!)
  • 评论内容较长,点击标题查看
  • --cfq
  • 2. re: POJ1657(Distance on Chessboard)
  • 评论内容较长,点击标题查看
  • --bsfdg

阅读排行榜

  • 1. 欧拉图与哈密尔顿图(2188)
  • 2. POJ2808(校门外的树)(582)
  • 3. POJ1657(Distance on Chessboard)(535)
  • 4. ZOJ1944(Tree Recovery)(469)
  • 5. HDOJ1116(Play on Words)(332)

评论排行榜

  • 1. HDOJ1720(ACboy needs your help again!)(1)
  • 2. POJ1657(Distance on Chessboard)(1)
  • 3. HDOJ1116(Play on Words)(0)
  • 4. POJ3461(Oulipo)(0)
  • 5. HDOJ1711(Number Sequence)(0)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 放弃的blog