我们的可可西里

题面

转眼到了2008年的6月9日,盼望已久的高考结束了。我们踏上了向西的旅程(本来是想写西去之路,可是考虑不太妥当)。可可西里,多么诱人的名词,充满了奇幻的色彩和自然的淳朴。从可可西里徒步走回家的决定是在1年半前定下的,而现在,终于可以实现那个钩过手指的预定。我们的可可西里。。。

在回家的路上,疯子和蚊子看到了许多可爱的藏羚羊,无意之中疯子和蚊子发现藏羚羊的居住地的分布也是有规律的,虽然疯子和蚊子早就听说藏羚羊是一种群体性很强又有超高IQ的动物,但是还是为它们的居住地分布规律感到惊叹。经过细心的观察,疯子和蚊子发现,如果假设一个藏羚羊群体有N只羊,就可以把它们的领地当做一个N*N的方阵,在这个方阵上第I列的第I 行都有一个圣地,它们不会居住在圣地,同时每行每列只能居住一只羚羊。于是他们很快算出一个有N只羊的藏羚羊群体的居住地分布方法数。

这是圣地的一种排列方法

输入格式

一个整数N 代表藏羚羊的个数

输出格式

一个整数sum代表方法数

样例

\(\texttt{input\#1}\)

4

\(\texttt{output\#1}\)

9

数据范围与提示

对于30%的数据,n<=10

对于全部数据 n<=1000


题解

错排。高精度(毒瘤)。


\(Code\)

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm> int n;
std::string f[1001]={"0","0","1","2"}; inline std::string jia(std::string a,std::string b) {
std::string ans="",cheng1="",cheng2="";
int len=a.length();
for(int i=len-1;i>=0;--i) cheng1+=a[i];
len=b.length();
for(int i=len-1;i>=0;--i) cheng2+=b[i];
int len1=cheng1.length(),len2=cheng2.length();
int sum=0;
char jinwei=0,c1,c2;
while(sum<len1||sum<len2) {
c1=cheng1[sum]-48;
c2=cheng2[sum]-48;
if(c1<0) c1=0;
if(c2<0) c2=0;
if(sum>=len1) c1=0;
if(sum>=len2) c2=0;
c1+=c2;
c1+=jinwei;
jinwei=0;
if(c1>9) {
jinwei=c1/10;
c1=c1%10;
}
ans+=c1+'0';
sum++;
}
while(jinwei!=0) {
char qwq=jinwei/10;
jinwei=jinwei%10;
ans+=jinwei+'0';
jinwei=qwq;
}
std::string anss="";
len=ans.length();
for(int i=len-1;i>=0;--i) anss+=ans[i];
return anss;
} inline std::string cheng(int n,std::string a) {
std::string ans="",cheng1="",cheng2="";
while(n) {
cheng1+=n%10+'0';
n/=10;
}
int len=a.length();
for(int i=len-1;i>=0;--i) cheng2+=a[i];
int len1=cheng1.length(),len2=cheng2.length();
std::string qwq="0",qaq="",emm="";
char jinwei=0;
for(int i=0;i<len1;++i) {
qaq="",emm="";
int x=i;
while(x) {
--x;
qaq+='0';
}
for(int j=0;j<len2;++j) {
char c2=cheng2[j]-'0',c1=cheng1[i]-'0';
c1*=c2;
c1+=jinwei;
jinwei=0;
if(c1>9) {
jinwei=c1/10;
c1%=10;
}
qaq+=c1+'0';
}
while(jinwei!=0) {
char wasd=jinwei/10;
jinwei%=10;
qaq+=jinwei+'0';
jinwei=wasd;
}
int len=qaq.length();
for(int j=len-1;j>=0;--j) emm+=qaq[j];
qwq=jia(qwq,emm);
}
return qwq;
} inline std::string jiaqwq(std::string qaq) {
int len=qaq.length();
std::string ans="",qwq="";
char jinwei=1;
for(int i=len-1;i>=0;--i) {
qaq[i]-='0';
qaq[i]+=jinwei;
jinwei=0;
ans+=qaq[i]%10+'0';
if(qaq[i]>9) jinwei=qaq[i]/10;
}
len=ans.length();
for(int i=len-1;i>=0;--i) qwq+=ans[i];
return qwq;
} int main() {
std::cin>>n;
for(int i=4;i<=n;++i) {
std::string qwq=jia(f[i-1],f[i-2]);
f[i]=cheng(i-1,qwq);
}
std::cout<<f[n];
return 0;
}

上接【CSP-S膜你考】那23个路口

【CSP-S膜你考】我们的可可西里的更多相关文章

  1. 【CSP-S膜你考】那23个路口

    那23个路口 题面 故事的起源不加赘述,那23个路口. 单刀直入,我直接说题的意思. 蚊子和疯子在做一件事,就是他们要在茫茫的大街上找一个出发点,然后从出发点开始,经过上下左右23次拐弯,到达一个他们 ...

  2. 【CSP-S膜你考】即时战略(模拟)

    Problem B. 即时战略 (rts.c/cpp/pas) 注意 Input file: rts.in Output file: rts.out Time Limit : 2 seconds Me ...

  3. 【CSP-S膜你考】不怕噩梦 (模拟)

    不怕噩梦 题面 蚊子最近经常做噩梦,然后就会被吓醒.这可不好.. 疯子一直在发愁,然后突然有一天,他发现蚊子其实就是害怕某些事. 如果那些事出现在她的梦里,就会害怕. 我们可以假定那个害怕的事其实是一 ...

  4. 【CSP-S膜你考】 A

    A 题面 对于给定的一个正整数n, 判断n是否能分成若干个正整数之和 (可以重复) , 其中每个正整数都能表示成两个质数乘积. 输入格式 第一行一个正整数 q,表示询问组数. 接下来 q 行,每行一个 ...

  5. 【CSP-S膜你考】最近公共祖先 (数学)

    Problem A. 最近公共祖先 (commonants.c/cpp/pas) 注意 Input file: commonants.in Output file: commonants.out Ti ...

  6. N(C)O(S)I(P)P 2019 退役记

    N(C)O(S)I(P)P 2019 退役记 day-4 今天下午老师突然咕了,于是一下午欢乐时光 今天上午考试T3线段树维护个区间加,区间乘 一遍过编译,一遍过样例(第一次,俺比较弱(虽然也发现和暴 ...

  7. 杂记三 &#183; CSP-2019-The first step

    update:我终于懂得衰亡的民族之所以沉默的缘由了. 初赛Day -7 虽然我是第一次参加初赛而且到现在为止我还没见过初赛题但我一点也不慌! 真的!一点!也不慌! 初赛Day 1 早上和可s爱b j ...

  8. 日记 + sb错误

    置顶消息cpdd 1.29 完了,文化课没了 我是废物 1.28 更新了自己的副标题 前副标题:Future never has to do with past time,but present ti ...

  9. 「CSP」第一届提高组考后总结

    「CSP」第一届提高组考后总结 问题分析+反思 成绩 心态 考前心态 考时心态 考后心态 方法 心灵鸡汤... 在学习了三年之后,我们信竞迎来了初中最后一次大考,也是第一次 CSPCSPCSP 考试. ...

随机推荐

  1. 利用mysql的LOAD DATA INFILE的功能读取客户端文件

    前言:今天在浏览某知论坛时,看到某大佬在渗透过程中使用伪造的MySQL服务端读取客户端文件,此大佬在利用过程中描述得不是很详细,作为小白的我看不懂啊,由此产生了此篇文章. 某大佬文章:https:// ...

  2. 明解C语言 入门篇 第七章答案

    练习7-1 #include <stdio.h> int main() { int n; printf(,, ); //此行显示结果为 4 3 6 因为1的字节就是为4,而-1的字节也是4 ...

  3. Linux 分区管理器

    下面的列表没有特定的排名顺序.大多数分区工具应该存在于 Linux 发行版的仓库中. GParted 这可能是 Linux 发行版中最流行的基于 GUI 的分区管理器.你可能已在某些发行版中预装它.如 ...

  4. Web应急:管理员账号被篡改

    你是某一个网站的管理员,有一天,你的管理员账号admin却登录不了,进入数据库查看,原来管理员账号用户名不存在了,却多了另外一个管理员用户名.不对,不是新增了管理员,而是你的管理员用户名被篡改了. 现 ...

  5. JavaIO学习:字节流

    JavaIO流之字节流 字节流 抽象基类:InputStream,OutputStream. 字节流可以操作任何数据. 注意: 字符流使用的数组是字符数组,char[] chs : 字节流使用的数组是 ...

  6. Jackson 序列化/反序列化时忽略某属性

    https://www.iteye.com/blog/wwwcomy-2397340 博客分类: Spring jacksonread_onlyjsonignore  基于Spring MVC的RES ...

  7. es6的let与const

    es6新增命令let,用于声明变量,他与var的不同主要有三点: let有块级作用域 let没有变量提升 同级作用域内,let不可以重复定义 let有块级作用域: es5 for(var i=0;i& ...

  8. MEDICI仿真NMOS器件晶体管语法笔记

    MEDICI仿真NMOS器件晶体管 TITLE     TMA MEDICI Example 1 - 1.5 Micron N-Channel MOSFET 给本例子取的标题,对实际的模拟无用 COM ...

  9. Spark GraphX图计算核心源码分析【图构建器、顶点、边】

    一.图构建器 GraphX提供了几种从RDD或磁盘上的顶点和边的集合构建图形的方法.默认情况下,没有图构建器会重新划分图的边:相反,边保留在默认分区中.Graph.groupEdges要求对图进行重新 ...

  10. LDA-作为线性判别 降维 推导

    LDA 降维原理 前面对 LDA 作为作为分类器 有详细推导, 其核心就是 贝叶斯公式, 已知全概率, 求(条件概率)最大先验概率, 类似的问题. 而 LDA 如果作为 降维 的原理是: a. 将带上 ...