#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max 100
/****/
void xuatfile(char *fn);
void docfile(char *fn,int *&a,int *&b,int &n,int &m);
void nhan(char *fn,int *&a,int *&b,int **&mt,int n,int m);
void ghifile(char *fn,int *&a,int n);
/****/
void main()
{
char *fn="bignum_in.txt";
char *fm="bignum_out.txt";
int *a=new int[max],*b=new int[max];// ab co toi da 100 chu so
int n=0,m=0;//la so chu so cua a,b doc tu file,khoi tao =0
docfile(fn,a,b,n,m);
//tao ma ram luu ket qua nhan tung chu so cua voi b
int **mt;
mt=new int *[n];
for(int i=0;i<n;i++)
mt[i]=new int [m];
nhan(fm,a,b,mt,n,m);
//thu hoi mang dong
delete a;
delete b;
for(i=0;i<m;i++)
delete []mt[i];
delete[]mt;
//xuat ket qua
xuatfile(fm);
}
/****/
void xuatfile(char *fn)
{
FILE *f;
char x;
f=fopen(fn,"r");
while(fscanf(f,"%c",&x)&&!feof(f))
cout<<x;
fclose(f);
}
void docfile(char *fn,int *&a,int *&b,int &n,int &m)
{
FILE *f;
f=fopen(fn,"r");
char x;
int i=0,j=0;
while(fscanf(f,"%c",&x)&&!feof(f))
{
if(x=='n')
while(fscanf(f,"%c",&x)&&!feof(f))
b[j++]=x-'0';
else
a[i++]=x-'0';
}
n=i;
m=j;
fclose(f);
}
void ghifile(char *fn,int *&a,int n)
{
FILE *f;
f=fopen(fn,"w");
char ch;
int i=n-1;
while(i>0&&a[i]==0)
i--;
for(;i>=0;i--)
{
ch=a[i]+'0';
fprintf(f,"%c",ch);
}
fclose(f);
}
void nhan(char *fn,int *&a,int *&b,int **&mt,int n,int m)
{
//mang kq luu ket qua tam thoi
int *kq=new int[n*m];
int k=0,i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
mt[i][j]=a[i]*b[j];
//xu ly ma tran
kq[k++]=mt[n-1][m-1];
i=n-1;
for(j=m-2;j>=0;j--)
{
int a=i,b=j;
kq[k]=0;
while(a>=0&&b<m)
{
kq[k]=kq[k]+mt[a][b];
a--;
b++;
}
k++;
}
if(j<0)
i--;
for(;i>0;i--)
{
int a;
kq[k]=0;
if(j=m-1&&i<=0)
m=m-1;
for(a=i,j=0;a>=0&&j<m;a--,j++)
kq[k]=kq[k]+mt[a][j];
k++;
}
kq[k]=mt[0][0];
k++;
//xu ly mang
int nho=0;
for(i=0;i<k;i++)
{
int t;
t=kq[i]+nho;
nho=t/10;
kq[i]=t%10;
}
if(nho!=0)
kq[k++]=nho;
//ghi ket qua vao file
ghifile(fn,kq,k);
}
Thứ Bảy, 18 tháng 4, 2009
Một cách nhân độc đáo (Phần 2)
Đây là đoạn code do Nhung viết lên, mọi người xem thử nhé.
Đăng ký:
Đăng Nhận xét (Atom)
Bài đăng phổ biến
-
(ictexpress.com) – Không cần phân vùng ổ cứng, không sợ mất dữ liệu, cài đặt Ubuntu chỉ với 1 click chuột, gỡ bỏ dễ dàng đó là ưu điểm mà ...
-
"Copy/Paste functionality has been disabled." là cái thông báo mà khá nhiều bạn bị dính, lỗi ở đâu? Virus? hay registry lỗi? máy m...
-
UBND TP.HCM vừa có văn bản xin phép Thủ tướng Chính phủ, Bộ Văn hóa Thể thao Du lịch cho phép bắn pháo hoa tầm cao tại 2 điểm dịp tết Dương ...
-
Here is a review of the Acronis Disk Director Suite . We will attempt to resize the primary partition and create a new logical partition ...
-
Emulator Keyboard Mapping The table below summarizes the mappings between the emulator keys and and the keys of your keyboard. Table 2. ...
-
No Serial & No Activation Needed | Extracted Size: 3.47GB | Compressed Files for Download 916MB | Genuine version | FULLY UPDATABLE wi...
-
Bạn nhấp vào đường link này để cài đặt ứng dụng và làm theo hướng dẫn bên dưới. Installation and Usage Instructions Installation 1. Install...
-
Đã từ lâu bạn mê mẩn với các ứng dụng tiện ích thông minh của Google. Từ hệ thống email siêu tưởng 7GB (Google Mail), hệ thống chia sẻ văn ...
-
Đã 29 năm trôi qua kể từ ngày 30/8/1982, ngày hệ thống liên lạc bằng thư điện tử (email) được cấp bản quyền. Hiện có khoảng 3,1 tỉ tà...
-
Các game đều thuộc thể loại đố mẹo "dân gian" rất thích hợp để xả strees sau những giờ học/làm việc căng thẳng. Tải phiên bản đầy ...
Không có nhận xét nào:
Đăng nhận xét