1012.cpp

来自「平时acm训练时ac的源代码」· C++ 代码 · 共 82 行

CPP
82
字号
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main(){
	long m,i,j,l,n,fn1[200]={0},fn2[200]={0},f[200]={0};
	char a[10]={0};
	scanf("%ld",&n);

	 scanf("%s",&a);
     j=atoi(a);
	 l=strlen(a);

      m=199;
	 for(i=l-1;i>=0;i--)
	 {
		 fn1[m]=(a[i]-'0')*(j-1);
		 fn2[m]=a[i]-'0';
		 m--;
	 }/////////////fn1=k*(k-1);

	 i=m;//////////////
	 m=199;
	 fn2[199]=fn2[199]-1;
	 while(1)
	 {
		 if(fn2[m]<0)
		 {
			 fn2[m]=fn2[m]+10;
			 fn2[m-1]=fn2[m-1]-1;
			 
		 }
         m--;
		 if(m<=i)
			 break;
	 }//////////////////fn2==k-1;
   
      if(n==1)
		  printf("%d",j-1);
	  else if(n==2)
	  {
		  printf("%d",j*(j-1));
	  }
	  else{
		  j--;////j=k-1;
	
		  for(i=1;i<=n-2;i++)
		  {
			  
			      
	
		      for(l=0;l<=199;l++)
			  {
				
			     f[l]=fn1[l];
				 fn1[l]=fn1[l]+fn2[l];
				 fn1[l]=fn1[l]*j;
			     fn2[l]=f[l];
			  }
			for(l=199;l>=0;l--)
			{
				if(fn1[l]>=10)
				{
					fn1[l-1]=fn1[l-1]+fn1[l]/10;
					fn1[l]=fn1[l]%10;
				}
			}
				
               
		  }
		  m=0;
		  while(fn1[m]==0)
			  m++;
		  while(m<=199)
		  {
			  printf("%ld",fn1[m]);
			  m++;
		  }
	  }
}

				 
				

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?