CodeVS 1697-⑨要写信
Posted HAdolf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeVS 1697-⑨要写信相关的知识,希望对你有一定的参考价值。
原题
题目描述 Description
琪露诺(冰之妖精)有操控冷气的能力。能瞬间冻结小东西,比普通的妖精更危险。一直在释放冷气的她周围总是非常寒冷。
由于以下三点原因……
- 琪露诺的符卡 冰符“Icicle Fall”-Easy的弹幕有够蠢的,只要站在她的正前方就没任何弹幕会碰到你;
- ZUN在《红魔乡》中介绍她时已经说她有点笨笨的了;
- 在ZUN放出《东方花映冢》的介绍图时,在图中把琪露诺放在了⑨的位置上,并以“⑨笨蛋”简单带过,从此“⑨”及“笨蛋”就成为她的别名了……
所以琪露诺便得到了“笨蛋”的别称。
某日,琪露诺又2了……
她写了N封信要装到N个信封里面,却全都装错了……现在想知道有多少种装错的可能性。
输入描述 Input Description
信和信封的数量N。
输出描述 Output Description
装错的可能性的数量。
样例输入 Sample Input
样例输出 Sample Output
数据范围及提示 Data Size & Hint
1≤N≤100
题意
看题面最后一句话,就是求错排数,也就是将N封信全部错装到N个信箱里(不允许有一个是装对的).
题解
uses math;
var ss:ansistring;
var f:array[0..1000] of ansistring;
var n,i:longint;
function time(s1,s2:ansistring):ansistring;
var len1,len2,i,j,x,l:longint;
var a,b,c:array[1..100000] of longint;
var ss:string;
begin
len1:=length(s1);len2:=length(s2);ss:=\'\';
fillchar(a,sizeof(a),0);fillchar(b,sizeof(b),0);fillchar(c,sizeof(c),0);
for i:=1 to len1 do a[len1-i+1]:=ord(s1[i])-48;
for i:=1 to len2 do b[len2-i+1]:=ord(s2[i])-48;
for i:=1 to len1 do
for j:=1 to len2 do
begin
c[i+j-1]:=c[i+j-1]+a[i]*b[j];
c[i+j]:=c[i+j]+c[i+j-1] div 10;
c[i+j-1]:=c[i+j-1] mod 10;
end;
for i:=len1+len2 downto 1 do if c[i]<>0 then begin l:=i;break; end;
for i:=l downto 1 do ss:=ss+chr(c[i]+48);
exit(ss);
end;
function add(s1,s2:ansistring):ansistring;
var len1,len2,i,x,l:longint;
var a,b,c:array[1..10000] of longint;
var ss,p:string;
begin
len1:=length(s1);len2:=length(s2);ss:=\'\';p:=\'\';
fillchar(a,sizeof(a),0);fillchar(b,sizeof(b),0);
for i:=1 to len1 do a[len1-i+1]:=ord(s1[i])-48;
for i:=1 to len2 do b[len2-i+1]:=ord(s2[i])-48;
i:=0;x:=0;
for i:=1 to max(len1,len2) do
begin
x:=x+a[i]+b[i];
c[i]:=x mod 10;
x:=x div 10;
end;
if x>0 then begin l:=i+1;c[l]:=1; end else l:=i;
for i:=l downto 1 do ss:=ss+chr(c[i]+48);
exit(ss);
end;
begin
readln(n);
if n=1 then begin writeln(0);halt; end;
if n=2 then begin writeln(1);halt; end;
f[1]:=\'0\';f[2]:=\'1\';
for i:=3 to n do
begin
str(i-1,ss);
f[i]:=time(ss,add(f[i-1],f[i-2]));
end;
writeln(f[n]);
end.
欢迎转载,若转载请注明出处.
以上是关于CodeVS 1697-⑨要写信的主要内容,如果未能解决你的问题,请参考以下文章