int main()
{
	int i;
	scanf("%d%d",&n,&m);
	scanf("%s",dr+1);
	jc[0]=inv[0]=1;
	for(i=1;i<=n;i++)
	{
		jc[i]=jc[i-1];
		cheng(jc[i],i);
		inv[i]=power(jc[i],Mod-2);
	}
	int ans=0;
	int val=zuhe(n-1,m);
	int zeng=9;
	for(i=n;i>=1;i--)
	{
		int now=dr[i]-'0';
		cheng(now,val);
		jia(ans,now);
		now=zuhe(i-2,m);
		cheng(now,zeng);
		jia(val,now);
		cheng(zeng,10);
	}
	printf("%d\n",ans);
	return 0;
}
int zuhe(int x,int y)
{
	if(x<y)
		return 0;
	int ans=jc[x];
	cheng(ans,inv[y]);
	cheng(ans,inv[x-y]);
	return ans;
}
int power(int x,int y)
{
	int res=1;
	while(y)
	{
		if(y&1)
			cheng(res,x);
		cheng(x,x);
		y>>=1;
	}
	return res;
}
示例#4
0
文件: main.c 项目: rock-cloud/ojCode
int main()
{
	int 	tempnum[6][LEN];
	int 	input[LEN];
	char    tempchar;
	int		xiaoshu;
	int		mi;
	int		i, j, numi;
	int 	ret[LEN], a[LEN], b[LEN];
	memset(input, 0, sizeof(input));
	for ( i = 4, xiaoshu = 0; i >= 0; i--)
	{
		tempchar = getchar();
		if ( tempchar >= '0' && tempchar <= '9' )
		{
			input[i] = tempchar-'0';
		}
		else if (tempchar == '.')
		{
			xiaoshu = i+1;
			i++;
		}
		else
		{
			i++;
		}
	}
	getchar();
	scanf("%d", &mi);
	printNum(input);
	printf("^%d %d\n", mi, xiaoshu);
	memcpy( tempnum[0], input, 7*sizeof(int));
	for( i = 0, j = 1; i < 4 && j < mi*2; i++, j<<=2)
	{
		cheng(tempnum[i], tempnum[i], tempnum[i+1]);
	}
	memset(ret, 0, sizeof(ret));
	ret[0] = 1;
	for ( i = 1, j = 0; i <= 32; i<<=1, j++)
	{
		if ( (mi&i)!=0 )
		{
//			printNum(ret);
//			printf("\n");
//			printNum(tempnum[j]);
//			printf("\n");
			cheng(ret, tempnum[j], ret);
		}
	}
	printNum(ret);
}
示例#5
0
文件: hy_1275.cpp 项目: liuq901/code
int main()
{
   void cheng(int *,int *,int),gjcheng(int *,int *,int *),chu(int *,int),jia(int *,int *);
   int i,j,k,n;
   scanf("%d",&n);
   for (i=1;i<=n;i++)
   {
      a[i][0][0]=1;
      a[i][0][1]=1;
      for (j=1;j<=i;j++)
         cheng(a[i][j],a[i][j-1],i-j+1);
   }
   f[0][0]=1;
   f[0][1]=1;
   for (i=1;i<=n;i++)
   {
      memcpy(f[i],f[i-1],sizeof(f[i-1]));
      for (j=1;j<=i-1;j++)
      {
         cheng(b,a[i-1][j],j+1);
         gjcheng(b,b,f[i-j-1]);
         chu(b,2);
         jia(f[i],b);
         if (j>1 && (j+1)%3!=0)
         {
            gjcheng(b,a[i-1][j],f[i-j-1]);
            chu(b,2);
            jia(f[i],b);
         }
      }
   }
   printf("%d",f[n][f[n][0]]);
   for (i=f[n][0]-1;i>=1;i--)
   {
      j=f[n][i];
      printf("%d",j/100);
      j%=100;
      printf("%d",j/10);
      j%=10;
      printf("%d",j);
   }
   printf("\n");
   system("pause");
   return(0);
}
示例#6
0
int main()
{
    int choose;
    list *Dxs1,*Dxs2,*re1,*re2;
    Dxs1 = csh();
    Dxs2 = csh();
    re1 = csh();
    while(true)
    {
 
        clear(Dxs1);
        clear(Dxs2);
        clear(re1);
        printf("多项式相加请输入---1\n");
        printf("多项式相减请输入---2\n");
        printf("多项式相乘请输入---3\n");
        printf("退出---------------4\n");
        scanf("%d",&choose);
        switch(choose)
        {
        case 1:
            start(Dxs1,Dxs2);
            jia(Dxs1,Dxs2,re1);
            printf("两个多项式相加的结果: ");
            print_dxs(re1);
            break;
        case 2:
            start(Dxs1,Dxs2);
            jian(Dxs1,Dxs2,re1);
            printf("两个多项式相减的结果: ");
            print_dxs(re1);
            break;
        case 3:
            start(Dxs1,Dxs2);
            cheng(Dxs1,Dxs2,re1);
            printf("两个多项式相乘的结果: ");
            print_dxs(re1);
            break;
        case 4:exit(1);break;
        default:
            printf("错误!\n");
            break;
        }
    }
}
示例#7
0
文件: main.cpp 项目: ggKM/TankWar
int main()
{

	system("color f0");
	shuoming();
    
    short cuo=0;
    node *tou1=NULL,*tou2=NULL,* result=NULL;
    while(1)
	{  
		do
		{
			cout<<"请选择功能:"<<endl;
			cin>>yunsuan;
			if(!cin)
			{
				cout<<"您输入的不是数字,请重新运行程序"<<endl;
			    exit(0);
			}//if
			switch(yunsuan)
			{
			     case 1:cuo=0;jia(tou1,tou2,result);break;
		         case 2:cuo=0;jian(tou1,tou2,result);break;
	    	     case 3:cuo=0;cheng(tou1,tou2,result);break;
	             case 4:cuo=0;jifen(tou1,result);break;
			     case 5:cuo=0;weifen(tou1,result);break;
		         case 6:cuo=0;qiuzhi(tou1,result);break;
                 case 7:cuo=0;init(tou1);cout<<"输入各项:"<<endl;cout<<"y="<<endl;fuzhi(tou1);outxu(tou1,result);break;
				 default:cuo=1;cout<<"超出功能选择范围,请重新选择:"<<endl;
			}//switch
			
		} while(cuo==1);//do
        
		out(result);
		destory(tou1);destory(tou2);destory(result);
	
		short i=0;
		cout<<"是否清屏(1:是)(0:否):";
		cin>>i;
		if(i==1) {system("cls");shuoming();}
		else     cout<<"*********************"<<endl;
	    
	}//while
    return 0;
}
示例#8
0
文件: main.c 项目: rock-cloud/ojCode
int main()
{
	int 	tempnum[6][LEN];
	int 	input[LEN];
	char    charinput[LEN];
	int     charlen;    //len of charinput
	char    tempchar;
	int		xiaoshu;
	int		mi;
	int		i, j, numi, k;
	int 	ret[LEN], a[LEN], b[LEN];

	while(1)
	{
        memset(input, 0, sizeof(input));
        memset(tempnum, 0, sizeof(tempnum));
        memset(charinput, 0, sizeof(charinput));
        memset(ret, 0, sizeof(ret));
        if ( scanf("%s%d", charinput, &mi) != 2 )
        {
            return 0;
        }
        if ( mi == 0 )
        {
            printf("1\n");
            continue;
        }
       // printf("<%s> %d\n", charinput, mi);
        for ( i = 5, k = 0, xiaoshu = 0; i >= 0; i--)
        {
            if ( charinput[i] > '0' && charinput[i] <= '9' )
            {
                k = 1;
            }
            else if ( charinput[i] == '.' )
            {
                break;
            }
            xiaoshu += k;
        }
        //find from back
        for ( i = strlen(charinput); ; i--)
        {
            if ( charinput[i] == '.' )
            {
                charinput[i] = 0;
                break;
            }
            else if ( charinput[i] > '0' && charinput[i] <= '9' )
            {
                charinput[i+1] = 0;
                break;
            }
        }

        //printf("B%sB\n", charinput);
        if ( strlen(charinput) == 0 )
        {
            printf("0\n");
            continue;
        }

        //find from front
        for ( i = 0; i < strlen(charinput); i++)
        {
            if ( charinput[i] > '0' && charinput[i] <= '9')
            {
                break;
            }
        }
        if ( i != 0 )
        {
            for ( j = 0; j < strlen(charinput); j++)
            {
                charinput[j] = charinput[i+j];
            }
        }
        //printf("F%sF\n", charinput);
        if ( strlen(charinput) == 0 )
        {
            printf("0\n");
            continue;
        }
        //printf("<%s>\n", charinput);
        for ( i = strlen(charinput)-1, j = 0; i >= 0; i--)
        {
            if ( charinput[i] == '.' )
            {
                continue;
            }
            else
            {
                input[j] = charinput[i] - '0';
                j++;
            }
        }
        //printNum(input);
        //printf("%d\n", xiaoshu);
        memcpy( tempnum[0], input, 7*sizeof(int));
        for( i = 0, j = 1; i < 4 && j <= mi/2; i++, j<<=1)
        {
            cheng(tempnum[i], tempnum[i], tempnum[i+1]);
            //printf("%d %d ", i, j);
            //printNum(tempnum[i]);
        }
        //printf("%d %d ", i, j);
        //printNum(tempnum[i]);
        memset(ret, 0, sizeof(ret));
        ret[0] = 1;
        for ( i = 1, j = 0; i <= mi; i<<=1, j++)
        {
            if ( (mi&i)!=0 )
            {
                cheng(ret, tempnum[j], ret);
            }
        }
       // printf(":\n");
        //printNum(ret);
        //printf("%d [", xiaoshu*mi);
        if ( intlen(ret) > xiaoshu*mi )
        {
            for ( i = intlen(ret) - 1; i >= xiaoshu*mi; i--)
            {
                printf("%d", ret[i]);
            }
            if ( i >= 0 )
            {
                printf(".");
            }
            for ( ; i >= 0; i--)
            {
                printf("%d", ret[i]);
            }
            printf("\n");
        }
        else
        {
            printf(".");
            for ( i = 0; i < xiaoshu*mi-intlen(ret); i++)
            {
                printf("0");
            }
            for ( i = intlen(ret)-1; i >= 0; i--)
            {
                printf("%d", ret[i]);
            }
            printf("\n");
        }
       // printf("]");
	}
	return 0;
}