factorials階乘
5!=1*2*3*4*5=120,所以5!的最後面的非零位是2。program name: fact47!=1*2*3*4*5*6*7=5040,所以最後面的非零位是4。
input format:
(fact4.in)
共一行,乙個不大於4,220的正整數n
output format:
(fact4.out)
共一行,輸出n!最後面的非零位。
7
4
分析:
這道題太簡單了= =……但是為什麼還要寫出來呢?顯然是我sb的寫錯了。。。。。。
剛開始就是直接在每個階段只留下最後乙個不是零的數來去乘接下來的數,但是在wa+n次debug後終於發現,只留下乙個數是不夠的。。。因為也許這個數和下乙個數乘起來末尾就成了零而不再適合了,比如本來是24,留下乙個4,接下來是25,按這種方法做4*25,結果是100,最後乙個非零為1,而實際上24*25=600,最後乙個非零位是6。那麼回到理論中,就是決定前面數字大小的數在上一階段只留下最後一位數時被略去了而導致結果可能出錯。。。所以。。。。。。乙個貪心演算法油然而生(= =這個詞好詭異的用法。。。):不只留1位,盡可能多留~考慮到結果為int且n最大為5000,所以我們選擇保留5位。。。
**:
/*id:138_3531
lang:c++
task:fact4
*/#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
int max(int a,int b)
int min(int a,int b)
ifstream fin("fact4.in");
ofstream fout("fact4.out");
int f(int n)
int main()
{ int n;
fin>>n;
fout<
STL仿函式簡單總結
c 相對於c語言來說,有兩個重點,1.物件導向特性 2.函式模板 泛型程式設計。對於stl中的6大元件 容器 演算法 迭代器 仿函式 介面卡 空間配置器。仿函式的用法比較多樣化,下面簡單總結一下。使用 outit copy if init first,init last,outit dest,pr ...
C 中 仿函式簡單介紹
仿函式,顧名思義,就是 仿造函式 的意思,它並不是函式,但是卻有著類似於函式的行為。那麼,它到底是什麼?首先要說的是 仿函式是泛型程式設計強大威力和純粹抽象概念的又乙個例證。我們在c 最早接觸泛型程式設計的恐怕是在學模板 template 的時候,它具有可以任意指定型別的特點。仿函式也具有這個特點,...
C 的STL之仿函式簡單介紹
include include include 演算法 include 仿函式 using namespace std bool less3 int x int main void 仿函式 繫結函式 第乙個大於30的數字 auto ifind find if myvecyor.begin myvec...