TOJ--1507--大数乘法的初步实现

Ah 我看来需要重新评估下自己的睡眠要求了 =-=

一张桌子看来还真的很难入眠

好吧 这题真的做了好久 主要第一次接触 大数乘法

但我觉得这题应该是有规律的 就我现在还没找到

我想要是去打表一遍 应该会找到的 懒得去了

因为我的做法一般般吧 有疑问的只要去查下 大数乘法 的版本就好

虽然版本也有很多种 我的是理解起来最简单的吧 就模拟下

touch  me

直接上代码了额---------------下次 再也不那么水了

 1 // 寻找7
 2 #include <iostream>
 3 #include <cstring>
 4 using namespace std;
 5
 6 int k , m;
 7 const int size = 1010;
 8 int ch[3];
 9 int temp[size];
10 int str[size];
11
12 void multiply()
13 {
14     int len , t , x;
15     memset( temp , 0 , sizeof(temp) );
16     if(m<10)
17     {
18         ch[0] = m;
19         ch[1] = ch[2] = 0;
20         x = 1;
21     }
22     else if(m>=10&&m<100)
23     {
24         ch[0] = m/10;
25         ch[1] = m%10;
26         ch[2] = 0;
27         x = 2;
28     }
29     else
30     {
31         ch[0] = m/100;
32         ch[1] = (m%100)/10;
33         ch[2] = (m%100)%10;
34         x = 3;
35     }
36     temp[0] = 1;
37     len = 1;
38     for( int n = 1 ; ; n++ )
39     {
40         memset( str , 0 , sizeof(str) );
41         for( int i = 0 ; i<x ; i++ )
42         {
43             for( int j = 0 ; j<len ; j++ )
44             {
45                 str[i+j+1]+=ch[i]*temp[j];
46             }
47         }
48         for( int i = x+len-1 ; i>=1 ; i-- )
49         {
50             if( str[i]>=10 )
51             {
52                 str[i-1]+=str[i]/10;
53                 str[i]%=10;
54             }
55         }
56         if( str[0]!=0 )
57             t = 0;
58         else
59             t = 1;
60         int tt = t;
61         for( int j = 0 ; t<x+len ; t++ , j++ )
62         {
63             temp[j] = str[t];
64         }
65         if( str[x+len-k]==7 )
66         {
67             cout<<n<<endl;
68             break;
69         }
70         len+=x-tt;
71     }
72 }
73
74 int main()
75 {
76     while(cin>>k>>m)
77     {
78         multiply();
79     }
80     return 0;
81 }

today:

  人想要进行改变 实在太难了

  短暂的改变固然简单

  纠结了一下 算了 就当少赌球 请妹子次饭吧

TOJ--1507--大数乘法的初步实现

时间: 2024-10-11 00:47:28

TOJ--1507--大数乘法的初步实现的相关文章

最短的计算大数乘法的c程序

#include <stdio.h> char s[99],t[99]; int m,n; void r(int i,int c) { int j=0,k=i; while(k)c+=s[j++]*t[k---1]; if(i)r(i-1,c/10); printf("%d",c%10); } void main() { gets(s);gets(t); while(s[n])s[n++]-=48; while(t[m])t[m++]-=48; r(m+n-1,0); }

大数乘法

1027 大数乘法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出2个大整数A,B,计算A*B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0) Output 输出A * B Input示例 123456 234567 Output示例 28958703552 相关问题 大数加法 0 大数开平方 640 大数进制转换 320 大数除法 320 大数乘法 V2 80 代码: 1 #inclu

ACM学习历程—51NOD1028 大数乘法V2(FFT)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1028 题目大意就是求两个大数的乘法. 但是用普通的大数乘法,这个长度的大数肯定不行. 大数可以表示点值表示法,然后卷积乘法就能用FFT加速运算了. 这道题是来存模板的. 代码: #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath>

【大数乘法】

1 #include<cstdio> 2 #include<cstring> 3 const int Len = 100; 4 void Mul(char a[],char b[],char c[])//大数乘法 5 { 6 int i,j; 7 int alen = strlen(a),blen = strlen(b); 8 memset(c,0,Len); 9 for(i = 0; i < alen; i++) 10 for(j = 0; j < blen; j++

大数乘法的几种算法分析及比较(2014腾讯南京笔试题)

转自:http://blog.csdn.net/chhuach2005/article/details/21168179 1.题目 编写两个任意位数的大数相乘的程序,给出计算结果. 2.题目分析 该题相继被ACM.华为.腾讯等选作笔试.面试题,若无准备要写出这种程序,还是要花一定的时间的.故,觉得有必要深入研究一下.搜索了网上的大多数该类程序和算法,发现,大数乘法主要有模拟手工计算的普通大数乘法,分治算法和FFT算法.其中普通大数乘法占据了90%以上,其优点是空间复杂度低,实现简单,时间复杂度为

HDOJ-1042 N!(大数乘法)

http://acm.hdu.edu.cn/showproblem.php?pid=1042 题意清晰..简单明了开门见山的大数乘法.. 10000的阶乘有35000多位 数组有36000够了 # include <stdio.h> # include <string.h> # define MAX 36000 int BigNum[MAX], NowLen; void Multi(int number) { int Temp[MAX]={0}, Tlen = 0, t;//Tem

大数乘法 (poj2389)

模板 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; void cheng( char *a, char *b, char *sum ) { int temp[2500]; int lena,lenb,l; lena=strlen(a); lenb=strlen(b); int len = lena + lenb;

Uva-oj Product 大数乘法

Product Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description The problem is to multiply two integers X, Y. (0<=X,Y<10250) Input The input will consist of a set of pairs of lines. Each line in pair cont

组合数学 + 大数乘法 + 大数除法 之 hdu 1261 字串数

//  [3/17/2015 JmingS] /* 此题可直接推导出公式: {(A1+A2+……+An)!} / {A1!A2!……An!} 由于 (12×26)! = 312! 只能通过数组来存储,所以又涉及『大数乘法』和『大数除法』, 大数实现的主要思想模拟手算,具体参考程序. */ 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5