poj3213

来源:互联网 发布:淘宝卖家可以改名字吗 编辑:程序博客网 时间:2024/06/05 12:07

只因用scanf+%d输入longlong 无限wa

#include <iostream>#include <cstring>#include <ctime>using namespace std;

#define maxn 1002int n,m,p;long long A[maxn][maxn],B[maxn][maxn],C[maxn][maxn];long long H[maxn];long long temp[maxn];long long TAB[maxn],TC[maxn];long long jemp[maxn];void  trans1 ( char s [],  long  long  int & n ) {  int i = 0 ;  int flag = 1 ;  if ( s [ 0 ]== '-' ) { flag =- 1 ; i ++; }  long  long  int sum = 0 ;  for ( int j = i ; s [ j ]; j ++)  {   sum = sum * 10 + s [ j ]- '0' ;  }  n =( long  long ) flag * sum ; return ;

} void mult1(){ for(int i=1;i<=p;i++) {  long long sum=0;  for(int j=1;j<=n;j++)   sum+=H[j]*A[j][i];  jemp[i]=sum;  //printf(" %lld",jemp[i]); } for(int i=1;i<=m;i++) {  long long sum=0;  for(int j=1;j<=p;j++)   sum+=jemp[j]*B[j][i];  TAB[i]=sum; } for(int i=1;i<=m;i++) {  long long sum=0;  for(int j=1;j<=n;j++)   sum+=H[j]*C[j][i];  TC[i]=sum; }

}int main(){  while(scanf("%d%d%d",&n,&p,&m)==3) {  memset(A,0,sizeof(A));  memset(B,0,sizeof(B));  memset(C,0,sizeof(C));  char s [ 30 ];   for ( int i = 1 ; i <= n ; i ++)    for ( int j = 1 ; j <= p ; j ++)    {     scanf ( "%s" , s );     trans1 ( s , A [ i ][ j ]);    }

  for ( int i = 1 ; i <= p ; i ++)    for ( int j = 1 ; j <= m ; j ++)    {     scanf ( "%s" , s );     trans1 ( s , B [ i ][ j ]);    }   for ( int i = 1 ; i <= n ; i ++)    for ( int j = 1 ; j <= m ; j ++)    {     scanf ( "%s" , s );     trans1 ( s , C [ i ][ j ]);    }  for(int i=1;i<=n;i++)H[i]=rand()%2000;

    mult1();  int ansy=-1;  for(int i=1;i<=m;i++)if(TC[i]!=TAB[i]){ansy=i;break;}  if(ansy==-1)     printf("Yes\n");  else     for(int i=1;i<=n;i++)   {   long long  sum=0;   for(int j=1;j<=p;j++)    sum+=A[i][j]*B[j][ansy];   if(sum!=C[i][ansy])   {    printf("No\n%d %d\n%lld\n",i,ansy,sum);    break;   }  }

 

 }return 0;}

0 0
原创粉丝点击