目录
先言
标准程序
第一题
第二题
第三题
第四题
题外话
题目
阶乘和
天使的起誓
Hanoi双塔问题
在上期中,我们留下了4道关于高精度算法的题目,都是非常简单的,那么现在将标准程序告诉大家!标程,启动!
#include
#include
using namespace std;
int a[100000],n,i,y,xy[100000];
int main()
{
cin>>n;
a[0]=1;
a[1]=1;
for (y=1;y<=n;y++)
{
memset(xy,0,sizeof(xy));
xy[0]=a[0];
for (i=1;i<=a[0];i++)
{
xy[i]+=a[i]*y;
xy[i+1]=xy[i]/10;
xy[i]%=10;
}
while (xy[xy[0]+1]>0)
{
xy[xy[0]+2]=xy[xy[0]+1]/10;
xy[xy[0]+1]%=10;
xy[0]++;
}
for (i=1;i<=xy[0];i++) a[i]=xy[i];
a[0]=xy[0];
}
for (i=a[0];i>=1;i--) cout<
#include
#include
#include
#include
using namespace std;
int main() {
int n,m,i;
cin>>n>>m;
printf("%d/%d=%d.",n,m,n/m);
n%=m;
for (i=1;i<=20;i++) {
n*=10;
printf("%d",n/m);
n%=m;
if (n*pow(10,20-i)
#include
using namespace std;
int n,i,j,a[15],b[15],l=15;
int main()
{
cin>>n; b[1]=6;
for(i=4; i<=n; i++)
{
a[1]=i%100000%10000%1000%100%10;
a[2]=i%100000%10000%1000%100/10;
a[3]=i%100000%10000%1000/100;
a[4]=i%100000%10000/1000;
a[5]=i%100000/10000;
a[6]=i/100000;
for(j=1; j<=l; j++)
{
b[j]=b[j]+a[j];
if(b[j]>9)
{
b[j]=b[j]%10;
b[j+1]=b[j+1]+1;
}
}
}
while((l>1)&&(b[l]==0)) l--;
for(i=l; i>=1; i--) cout<
#include
#include
#include
#include
using namespace std;
int a[10000];
string s1,s2;
void addd()
{
int a1=s1.size(),a2=s2.size();
for (int i=0;i1) a[0]--;
}
int main()
{
getline(cin,s1);
getline(cin,s2);
memset(a,0,sizeof(a));
addd();
for (int i=a[0];i>=1;i--) cout<
说一句题外话,有些人不要以为自己很牛*,就随意说这些题目很难,题目都是非常简单的,不要以为代码很长,题目就很难,做题的意义不是背代码!而是记住方法!只要方法能记住,代码就能记住了,不需要死记代码
编程这个东西是靠练出来的,不是背出来的!
后面再给大家一些题目,不提供标程了
【问题描述】
已知正整数N(N<=100),设S=1!+2!+3!+...N!。其中"!"表示阶乘,即N!=1*2*3*……*(N-1)*N,如:3!=1*2*3=6。请编程实现:输入正整数N,输出计算结果S的值。
【输入样例】sum.in
4
【输出样例】sum.out
33
【问题描述】
TENSHI非常幸运的被选为掌管智慧之匙的天使。在正式任职之前,她必须和其他新当选的天使一样,要宣誓。宣誓仪式是每位天使各自表述自己的使命,她们的发言稿被放在N个呈圆形排列的宝盒中。这些宝盒按顺时针方向被编上号码1、2、3……、N-1、N。一开始天使们站在编号为N的宝盒旁。她们各自手上都有一个数字,代表她们自己的发言稿所在的盒子是从1号盒子开始按顺时针方向的第几个。例如:有7个盒子,那么如果TENSHI手上的数字为9,那么她的发言稿所在盒子就是第2个。现在天使们开始按照自己手上的数字来找发言稿,先找到的就可以先发言。TENSHI一下子就找到了,于是她最先上台宣誓:“我将带领大家开启NOI之门……”TENSHI宣誓结束以后,陆续有天使上台宣誓。可是有一位天使找了好久都找不到她的发言稿,原来她手上的数字M非常大,她转了好久都找不到她想找的宝盒。
【问题求解】
请帮助这位天使找到她想找的宝盒的编号。
【输入格式】
从文件YUBIKILI.IN的第一、二行分别读入正整数N和M,其中N、M满足
2 ≤ N ≤ 108,2 ≤ M ≤ 101000
【输出格式】
把所求宝盒的编号输出到文件YUBIKILI.OUT,文件只有一行(包括换行符)。
样例一
YUBIKILI.IN
7
9
YUBIKILI.OUT
2
样例二
YUBIKILI.IN
11
108
YUBIKILI.OUT
9
【问题描述】
给定A、B、C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形)。现要将这些圆盘移到C柱上,在移动过程中可放在B柱上暂存。要求:
(1)每次只能移动一个圆盘;
(2)A、B、C三根细柱上的圆盘都要保持上小下大的顺序;
任务:设An为2n个圆盘完成上述任务所需的最少移动次数,对于输入的n,输出An。
【输入格式】
输入文件hanoi.in为一个正整数n,表示在A柱上放有2n个圆盘。
【输出格式】
输出文件hanoi.out仅一行,包含一个正整数, 为完成上述任务所需的最少移动次数An。
样例一
hanoi.in
1
hanoi.out
2
样例二
hanoi.in
2
hanoi.out
6
【限制】
对于50%的数据,1<=n<=25
对于100%的数据,1<=n<=200
【提示】
设法建立An与An-1的递推关系式。