1、fact4

这个问题在《编程之美》上有过一个类似的问题,大概是求阶乘 n! 后面有多少个0,最后可以转换为求[1,N]之间因子5有多少次。这个问题和fact4有点渊源,对于 n! 的尾数,看看规律就知道了:

1!  = 1
2!  = 2
3!  = 6
4!  = 24
5!  = 120
6!  = 720
7!  = 5,040
8!  = 40,320
9!  = 362,880
10! = 3,628,800
11! = 39,916,800
12! = 479,001,600
13! = 6,227,020,800
14! = 87,178,291,200
15! = 1,307,674,368,000
16! = 20,922,789,888,000

其实都是有 (n-1)! 的非0尾数与 n 乘积的尾数,唯一的麻烦是遇到了5,就会使得尾数变0,这时候要往进位去找新产生的尾数。好了,所有的 Trick 都在这了。我们看到题目指出 n 不大于4220 < 5^6,所以,代码如下,注意那个pow

  1. #include <fstream>
  2. using  namespace std ;
  3. ifstream fin ( "fact4.in" ) ;
  4. ofstream fout ( "fact4.out" ) ;
  5. int N ;
  6. int main ( )
  7. {
  8. fin  >> N ;
  9. int multiplier  =  1,  pow  =  100000, factor ;
  10. for ( int i  =  1 ; i  <= N ;  ++i )
  11. {
  12. factor  = i  %  pow ;
  13. multiplier  = multiplier  * factor ;
  14. while (multiplier  %  10  ==  0 )
  15. multiplier  / =  10 ;
  16. while (multiplier  /  pow  >  0 )
  17. multiplier  % =  pow ;
  18. }
  19. fout  << multiplier  %  10  << endl ;
  20. return  0 ;
  21. }

2、spin

单纯朴素模拟,借助STL的bitset来存储轮子们的位置信息,因为数据量实在是小,所以没必要用线段树来做时空优化了,要是用线段树,肯定要快N倍吧。然后其实你不用bitset,直接开一个bool数组也是OK的。

  1. #include <fstream>
  2. #include <bitset>
  3. using  namespace std ;
  4. ifstream fin ( "spin.in" ) ;
  5. ofstream fout ( "spin.out" ) ;
  6. #define PI 360
  7. int speed [ 6 ] ;
  8. bitset <PI > curr [ 6 ], next [ 6 ] ;
  9. int main ( )
  10. {
  11. int num, start, end ;
  12. for ( int i = 1 ; i <= 5 ; i ++ )
  13. {
  14. fin  >> speed [i ]  >> num ;
  15. for ( int j  =  1 ; j  <= num ; j ++ )
  16. {
  17. fin  >> start  >> end ;
  18. end  + = start ;
  19. for ( int k  = start ; k  <= end ; k ++ )
  20. curr [i ]. set (k %PI ) ;
  21. }
  22. }
  23. int angle  =  0 ;
  24. bool flag ;
  25. while (angle  < PI )
  26. {
  27. for ( int i  =  0 ; i  < PI ;  ++i )
  28. {
  29. flag  =  false ;
  30. for ( int j  =  1 ; j  <=  5 ; j ++ )
  31. {
  32. if ( !curr [j ]. test (i ) )
  33. {
  34. flag  =  true ;
  35. break ;
  36. }
  37. }
  38. if ( !flag )
  39. {
  40. fout  << angle  << endl ;
  41. return  0 ;
  42. }
  43. }
  44. for ( int i  =  1 ; i  <=  5 ; i ++ )
  45. {
  46. for ( int j  =  0 ; j  < PI ; j ++ )
  47. next [i ] [j ]  = curr [i ] [ (j +PI -speed [i ] ) %PI ] ;
  48. curr [i ] =next [i ] ;
  49. }
  50. ++angle ;
  51. }
  52. fout  <<  "none"  << endl ;
  53. return  0 ;
  54. }

USACO fact4, spin相关推荐

  1. 嵌入式 C/C++语言精华文章集锦

    C/C+语言 struct 深层探索 ............................................................................2 C++ ...

  2. USACO 3.2.3 Spin

    最近总是刷水题啊...还是相当谁的题啊...而且水题也好久才A掉啊...郁闷... 好不容易想起来刷个USACO,又碰个水题...最近堕落了啊... 链接就不给了... 题也自便吧. 模拟秒之.判断每 ...

  3. USACO / Factorials (简单模拟)

    USACO/Factorials Factorials阶乘 N的阶乘写作N!,表示小于等于N的所有正整数的乘积. 阶乘会变大得很快,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了. ...

  4. USACO 3.2 Factorials 我居然一下过了(USACO最水题)

    题目大意是求n!的从右边数第一个非零数字 做法是,对于每次乘的结果把结尾的零都去掉(利用不断除10),然后取最低的几位(利用%100000),最后输出结果的个位. 这怕是USACO上代码最短的一道题了 ...

  5. usaco Shaping Regions

    这就是usaco 前面的windows area的变形. /* ID:jinbo wu TASK:rect1 LANG:C++ */ #include<iostream> #include ...

  6. usaco Postal Vans(dp)

    是哈密顿回路,然后...就不知道怎么写了 ,以前写过类似的不过情况没这么多也没这么复 usaco training 6.1.1 Postal Vans 题解 标签: usaco training题解d ...

  7. usaco Beef McNuggets

    这两天贼烦,ccf炸了,还有一个烦心事.哎我都不知道自己能不能坚持下去了.马上期末考了.这段时间还是抓紧时间复习吧同时刷usaco的节奏要跟以前一样了,毕竟课少了. 题解: 只要你知道以下的数论结论, ...

  8. usaco Factorials

    想到除2除5,没想到除后怎么办 /* ID:jinbo wu TASK: fact4 LANG: C++ */ #include<bits/stdc++.h> using namespac ...

  9. usaco前两章小结

    usaco 暑假老师有推荐做但是那个题目太长了,而且·大部分都是废话做起来特别慢,而且当时自己基本上什么都不懂,太难了所以看了题解做了两题就放弃了. 转眼就上学了,因为想学习acm所以就胡乱找题做但是 ...

最新文章

  1. oracle mysql事物隔离级别_Oracle数据库事物隔离级别
  2. 全球IP地址数周内用完,或现无法上网情况
  3. 年轻人的第一只机器狗,只要1.6万
  4. dubbo provider异步_Dubbo支持什么协议?与SpringCould相比它为什么效率要高一些?
  5. 聊聊《战魂铭人》的游戏设计
  6. C++学习笔记之对文件的操作2
  7. 和华为杯_2019全国大学生物联网设计竞赛(华为杯)拉开序幕
  8. C++ I/O流 格式控制(下)
  9. 【深入浅出etcd系列】4. 客户端
  10. python变量的作用域及生命周期_Python——变量的作用域
  11. 数组保存为灰度图_「PS抠图系列9」通道
  12. VPC2007与VServer2005R2比较
  13. Mysql数据库InnoDB存储引擎的隔离级别
  14. 在线html游戏翻译,怎么把整个英文网页游戏翻译成中文
  15. win10只有c盘怎么分区_win10系统硬盘怎么分区
  16. 跨境人才经验分享:跨境电商职位面试经验技巧
  17. 养兔子c语言sdut,SDUT 养兔子
  18. YEDROUDJ-NET: AN EFFICIENT CNN FOR SPATIAL STEGANALYSIS【Yedroudj-Net:一个高效的空间隐写分析CNN】
  19. C语言只能在开头定义变量?
  20. selenium被检测

热门文章

  1. Python3零基础入门学习视频+源码+课件+习题
  2. rank函数在c语言怎么用,什么是RANK函数 怎么使用
  3. NProgress 使用
  4. 产品经理是如何看待NPDP认证的?
  5. c++使用sanitizer代码分析
  6. STM32Cube扩展包开发指南
  7. Unreal 4 Fresnel Material 菲涅尔材质
  8. PHP可道云开源,Kodexplorer可道云 php版 v4.40
  9. express框架监听端口
  10. Mac下安装 PlantUML 插件画时序图、UML类图