【问题描述】 为了给同学们营造一个良好的学习环境和方便学校的管理,市政府准备对小W就读的学校进行重新规划,占地面积将再次扩大。学校通过领导会议决定,重建学校的围墙。由于学校太大,重建围墙也不是一件小项目,学校决定请专门的建筑公司来建筑。 许多建筑公司从网上得知这个消息后,纷纷来到学校,找到学校领导,对自己公司进行介绍,并希望能接下这个项目。学校领导对很多家公司印象都还不错,难以取舍,为了公平,学校决定通过竞标决定把这个项目交给哪家公司负责。这次竞标是由学校自主决定的,不但要注重建筑实力,而且还要看建筑公司是否有足够的智慧。 学校通过两轮选拔。第一轮,选出建筑实力较强的公司。进入第二轮后,由学校专门负责这个项目的领导进行智力考核。 领导说:为了美观,我们准备建设一面2米高的围墙,围墙建好后,墙外要贴上有图画的瓷砖,当然这就需要瓷砖越大越美观了。目前市面用的最大瓷砖是多大? 公司:宽1米,长2米的 领导:哦,我们就用这种吧,我们学校现需建筑N米长的围墙,如果用这种瓷砖来贴,总共有多少种贴法呢? 公司:…………….(正在计算中……………) 【输入文件】 输入文件wall.in,只有一个整数N(1<N<10000),表示围墙的长度。 【输出文件】 输出文件wall.out,只有一个数,表示如果用宽1米、长2米的瓷砖,贴在高2米,长N米的围墙上,最多有多少种不同的贴法? 【样例输入1】 4 【样例输出1】 5 【数据规模】对于20%的数据,2<N<90;对于60%的数据,2<N ≤1200;对于100%的数据,2< N<10000。
25、螺旋方阵(lxfz.cpp) 试题描述: 输入一个正整数N(1<=N<=20)后,可以得到N*N的数字螺旋方阵,先分别求出该方阵中主对角线与副对角线上数字之和S,P,然后输出S,P的积。 例如,N=5时得到螺旋方阵如下:
其中:主对角线从左上角到右下角,得到的数字之和S=1+17+25+21+9=73,副对角线从右上角到左下角,得到数字之和P=5+19+25+23+13=85. 最后S*P=6205. 输入描述: 输入文件lxfz.in,只有一行,一个正整数N。 输出描述: 输出文件lxfz.out,只有一行,一个正整数(表示主对角线与副对角线上数字之和的积)。 输入样例: 5 输出样例: 6205 我的代码:
#include<bits/stdc++.h>
using namespace std;
int a[100005],b[100005],c[100005];long n,k;
int main(){
freopen("wall.in","r",stdin);
freopen("wall.out","w",stdout);
cin>>n; a[1]=1;
b[1]=2;
if(n==1){
cout<<"1";
return 0;
}
if(n==2){
cout<<"2";
return 0;
}
for(int i=3;i<=n;i++)
{
k = 0;
for(int j=1;j<=2000;j++)
{
c[j]=a[j]+b[j]+k;
k = c[j]/10;
c[j]=c[j]%10;
}
for(int j=1;j<=20000;j++){a[j]=b[j];b[j]=c[j];}
}
k=2000;
while(c[k]==0&&k>1)k--;
for(int i = k;i >= 1;i--)cout<<c[i];
fclose(stdin);
fclose(stdout);
return 0;
}
错哪了???