- 简易题解:
- 1059 简单动规,注意用short储存map,int储存ans,否则TLE
- 1083 使用
getline(cin,str)
读入一行字符串
- 1099 注意对于不足4位的最大值/最小值的处理
- 1110 数据有多组然而题目中并没有表明
- 1116 可以使用STL库中reverse函数
- 1119 使用
strtol(num,*s,p)
轻松转换进制。
关联1145,1264
- 1126 不能用STL函数偷懒
- 1128关联1176
- 1131 使用substr找出字串,reverse翻转,find查找
- 1134,1244 数据太弱,unsigned long long 可破
- 1139 关联1136,1140
- 1148 数据其实有误,因为3200年不是闰年。
- 1156 矩阵快速幂
- 1195 ans=3*2^(n-1)-2;
- 1282 先填左上角三角形,再填右下角三角形。
- 1420
- (106470=dbinom{15}{4}+dbinom{15}{5}*dbinom{5}{2}+dbinom{15}{6}*dbinom{6}{2}),这是我凑了1小时凑出来的结果,然后找不到一般规律。请教了数学大神得知这是传说中的Stirling Num,emmm,果然概统学不好的人连呼吸都是痛的吗??
- (ans(n,m)=frac {1} {m!} cdot sum_{k=0}^m cdot (-1)^kcdot dbinom{m}{k}cdot (m-k)^n)
- 注意使用高精度
- Code:
#include<bits/stdc++.h>
using namespace std;
//Stirling Num
string mutiple(string a,string b) {
int ans[a.size()+b.size()+10]= {0};
for(int i=0; i<a.size(); ++i) {
for(int j=0; j<b.size(); ++j) {
ans[i+j+1]+=(a[i]-'0')*(b[j]-'0');
}
}
for(int i=a.size()+b.size()-1; i>0; --i) {
ans[i-1]+=ans[i]/10;
ans[i]%=10;
}
int i=0;
while(ans[i]==0)++i;
string ans2;
for(int j=i; j<a.size()+b.size(); ++j)ans2+=ans[j]+'0';
return ans2;
}
string add(string num1,string num2) {
vector<int>ans;
int i=num1.size(),j=num2.size(),t=0;
reverse(num1.begin(),num1.end());
reverse(num2.begin(),num2.end());
while(j<i) {
num2+='0';
j=num2.size();
}
while(i<j) {
num1+='0';
i=num1.size();
}
for(i=0; i<num1.size(); ++i)ans.push_back(num1[i]+num2[i]-'0'-'0');
for(i=0; i<ans.size()-1; ++i) {
if(ans[i]>=10) {
ans[i+1]+=1;
ans[i]-=10;
}
}
if(ans[ans.size()-1]>=10) {
ans[ans.size()-1]-=10;
ans.push_back(1);
}
reverse(ans.begin(),ans.end());
string ans2;
for(int i=0;i<ans.size();++i)ans2+=ans[i]+'0';
return ans2;
}
int main() {
int n,m;
string S[101000];
string S2[101];
S[0]="1";
for(int i=1; i<=100; ++i) {
S[i*100]="0";
S[i*100+i]="1";
for(int j=1; j<i; ++j){
int tmp=j;
string JJ;
while(tmp)
{
JJ+=tmp%10+'0';
tmp/=10;
}
reverse(JJ.begin(),JJ.end());
S[i*100+j]=add(S[(i-1)*100+j-1],mutiple(S[(i-1)*100+j],JJ));
}
}
while(cin>>n>>m) {
if (n<m)cout<<0<<endl;
else if(n==m)cout<<1<<endl;
else cout<<S[n*100+m]<<endl;
}
return 0;
}
- 代码Pack(将后缀名改为*.rar即可打开):
- 制作图片压缩包:
- 将image.jpg file.zip放到同一文件夹下
- 新建文本文档,打开并输入"copy/b image.jpg+file.zip image2.jpg"
- 将
新建文本文档.txt
改名为1.bat
- 双击运行
1.bat
- 演示GIF:
