sicily 1020 大数求模

这道题看起来蛮简单,不过也有一个误区,就是大数的长度<=400,这是非常大的一个数字,超过了long long的数据类型。因此,只能用字符数组来存储。

在实际实现时,字符数组如何求模运算也是需要考虑清楚的,我采用的是逐步移位,把余数往后移动。

//#include <stdlib.h>

#include <iostream>

#include <string>

using namespace std;

#define N 100

#define M 400

int Array[N];

int Result[N];

char BigNum[M];

int main()

{

 int count;

 cin>>count;

 int n;

 for(int i=0;i<count;i++)

 {

  cin>>n;

  for(int i=0;i<n;i++)

  {

   cin>>Array[i];

  }

  string str;

  cin>>str;

  //表示实际长度 

  int k=0;

  for(;k<str.length();k++)

  {

   BigNum[k]=str[k];

  }

  for(int j=0;j<n;j++)

  {

   	int temp=0;

	//大数实际长度为k

	for(int i=0;i<k;i++)

	{

	 temp*=10;

	 temp+=(BigNum[i]-'0');

     temp%=Array[j];

	}

	Result[j]=temp; 

  }

  cout<<'(';

  for(int i=0;i<n;i++)

  {

   cout<<Result[i];

   if(i!=n-1)

   {

   	cout<<',';

   }

  }

  cout<<')'<<endl;

 }

 //system("pause");

 return 0;

}

 

 

你可能感兴趣的:(CI)