0mrli0
发表于 2017-2-21 22:29:22
python 好多 c好少
/*找出一下1000位的整数中连续13个数字的最大乘积*/
#include<stdio.h>
typedef unsigned long longull;
char a[]={"7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"};
char *p = a;
ull mul(char *ch)//13个数的乘积
{
int i = 13;
ull t = 1;
while(i--)
{
t = t *(*(ch+i) - 48);
}
return t;
}
int main()
{
ull max = 0;
int i = 0;
while(i <= 987)
{
max = max < mul(p) ? mul(p) : max;
p++;
i++;
}
printf("%llu", max);
return 0;
}
23514624000
Process returned 0 (0x0) execution time : 0.030 s
marmot
发表于 2017-2-22 14:50:30
date_0 = """73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450"""
# 干掉有零的分片,把没有的做乘再比较
date = []
for a in date_0.split(): #去回车,重整数据为 整数 然放入一个列表date
for b in a :
date.append(int(b))
def chengji(list): # 给出分片做乘积
num = 1
for i in list:
num *= i
returnnum
def find_zero(list): # 找零,无零回 True, 有零False
for j in list :
if j == 0 :
return False
returnTrue
aw = 1
for k in range(0, len(date)-13):
list_pian = []
for n in date : # 分片
list_pian.append(n)
if find_zero(list_pian) :# 无零做积
m = chengji(list_pian)
if m > aw:
aw = m
print("答案是: " + str(aw))
NiceB
发表于 2017-3-1 18:43:11
思路:
只要13个数字中有零就可以直接略过,, 根据这个,,, 我们用0把这个字符串分片
然后找出长度大于13的的列表,, 只要在这些列表里面找就好了
#找出以下这个 1000 位的整数中连续 13 个数字的最大乘积。
num='''
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450'''
numlen=13
def prolist(list):
result=1
for i in list:
result = result*int(i)
return result
import time
start=time.time()
num=num.replace("\n","")
numlist=(list(num))
zerolist=num.split('0')
maxpro=0
for list in zerolist:
listlen=len(list)
if listlen<numlen:
continue
else:
for i in range(1,listlen-(numlen-2)):
maxpro=max(maxpro,prolist(list))
print(maxpro)
print("used:%.8fs" % (time.time()-start))
余欲渔
发表于 2017-3-2 11:54:31
1000个数字,禁止复制,我谢谢版主了,我的想法是先用0截断,分成多个字符串,小于13个的直接舍弃,留下了正好13的直接乘出结果,大于13的按顺序乘出结果,每次算的时候记录下对应的13个数,通过乘出来的结果对比,打印出最大的并找出对应的13位数
99592938
发表于 2017-3-14 16:44:31
str0='7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450'
max1=0
for i in range(0,1000-13):
str1 = str0
mul =1
for j in range(0,13):
mul=mul*int(str1)
if max1<mul:
max1=mul
str2=str1[:]
num=i
print(max1)
print(list(str2))
结果:>>>
23514624000
['5', '5', '7', '6', '6', '8', '9', '6', '6', '4', '8', '9', '5']
99592938
发表于 2017-3-14 16:48:42
本帖最后由 99592938 于 2017-3-14 16:51 编辑
余欲渔 发表于 2017-3-2 11:54
1000个数字,禁止复制,我谢谢版主了,我的想法是先用0截断,分成多个字符串,小于13个的直接舍弃,留下了 ...
哈哈,浏览器有复制,不要用右键或快捷键。另外你的想法对大数据很好用,1000个数字不需用这样吧?
JonTargaryen
发表于 2017-3-28 15:35:15
23514624000
#include <stdio.h>
#include <string.h>
int main(void)
{
char nums[] = {"316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"};
int i = 0, j;
long result = 0, temp = 1;
for(i = 0; i < strlen(nums) - 13; i++)
{
if((nums - '0') == 0)
{
i += 13;
}
else
{
for(j = 0; j < 13; j++)
{
temp *= nums - '0';
}
if (temp > result)
{
result = temp;
}
temp = 1;
}
}
printf("%ld\n", result);
return 0;
}
JonTargaryen
发表于 2017-3-28 15:42:11
JonTargaryen 发表于 2017-3-28 15:35
23514624000
def main():
nums = '''316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450'''
result = 0
temp = 1
for i in range(len(nums) - 12):
if int(nums) == 0:
i += 13
else:
for j in range(13):
temp *= int(nums)
if temp > result:
result = temp
temp = 1
print(result)
if __name__ == "__main__":
main()
zhu244912654
发表于 2017-3-30 17:43:23
#-*- coding:utf-8 -*-
def StrToList(mystr,length):
listTmp = []
for i in range(0,len(mystr) - length +1):
listTmp.append(int(mystr))
print(listTmp)
return listTmp
#数组
mystr = '7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450'
lastList = []
#将数组拆分成13位的列
mylist = StrToList(mystr,13)
lastList = []
for each in mylist:
p = 1
for i in (str(each)):
p *= int(i)
lastList.append(p)
print(max(lastList))
结果是23514624000
凌晨分子
发表于 2017-4-5 23:30:32
结果:70573265280
代码个人觉得还算比较简洁的,如下:
from functools import reduce
num = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
a = []
def calc(li)://遍历连续的13位,计算其乘积并放入a列表中
n=0
while n+13 <= len(li):
a.append(reduce(lambda x,y: int(x)*int(y), li))
n += 1
for i in list(filter(lambda a: len(a)>=13, str(num).split('0'))): //将大数转成字符串并用0和有连续13个非0数来分割
calc(i)
print(sorted(a), sorted(a)[-1])//排序并打印出最大的数
Eagle.Tong
发表于 2017-4-23 19:46:35
Python,感觉不够简练
#找出下列1000位的整数中连续13个数字的最大乘积
number = '''73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450'''
number = number.strip()
number = number.replace('\n','')
number = number.split('0')
number13 = []
for each in number:
if len(each) >= 13:
number13.append(each)
def max13(numberlist):
maxium = dict()
for eachs in numberlist:
for i in range(len(eachs)-12):
x = eachs
maxium.setdefault(x,1)
product = 1
for each in x:
product *= int(each)
if product > maxium:
maxium = product
ss = ''
mm = 1
for eachs in maxium:
if maxium > mm:
ss = eachs
mm = maxium
print('该1000位的整数连续13个数字的最大乘积为:%d;这13个数为:%s'%(mm,ss))
max13(number13)
结果:该1000位的整数连续13个数字的最大乘积为:23514624000;这13个数为:5576689664895
时间:0.00500178337097168s
天之南
发表于 2017-4-30 23:00:06
本帖最后由 天之南 于 2017-4-30 23:03 编辑
#include<stdio.h>
int main()
{
char str[] = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";
int l = strlen(str);
long long max = 0;
int start = 0;
for (int i = 0;i + 13 < l;i++)
{
long long x = 1;
for (int j = 0;j < 13;j++)
{
x*=(str-48);
}
if (max < x)
{
max = x;
start = i;
}
}
printf("%d", str - 48);
for (int j = start + 1;j < start+13;j++)
{
printf("×%d", str-48);
}
printf("=%lld\n", max);
return 0;
}
5×5×7×6×6×8×9×6×6×4×8×9×5=23514624000
铭记太阳
发表于 2017-5-4 18:09:56
答案是23514624000
我这个可以自定义找到数字的间距
#include<stdio.h>
//节省运算关键在于找0,找到0则两侧12个都不用计算了。
int main(void)
{
int i,gap,num,pt;//point作为在数组里面走的探针
int rst=1,tmp=1;
char str[]="73167176531330624919225119674426574742355349194934\
96983520312774506326239578318016984801869478851843\
85861560789112949495459501737958331952853208805511\
12540698747158523863050715693290963295227443043557\
66896648950445244523161731856403098711121722383113\
62229893423380308135336276614282806444486645238749\
30358907296290491560440772390713810515859307960866\
70172427121883998797908792274921901699720888093776\
65727333001053367881220235421809751254540594752243\
52584907711670556013604839586446706324415722155397\
53697817977846174064955149290862569321978468622482\
83972241375657056057490261407972968652414535100474\
82166370484403199890008895243450658541227588666881\
16427171479924442928230863465674813919123162824586\
17866458359124566529476545682848912883142607690042\
24219022671055626321111109370544217506941658960408\
07198403850962455444362981230987879927244284909188\
84580156166097919133875499200524063689912560717606\
05886116467109405077541002256983155200055935729725\
71636269561882670428252483600823257530420752963450";
for(i=0;i<1000;++i)
num=(int)str-48;
printf("data loading success!\nenter thr gap:\t");
scanf("%d",&gap);
pt = gap;
while(pt<1000)
{
relocate:
tmp=1;
for(i=pt-gap;i<pt;++i) tmp=tmp*num;
if(tmp==0)
{
pt++;
goto relocate; //为0表示跳过的位置里面有0
}
if(tmp>rst) rst=tmp;
while(num)
{
tmp /= num;
tmp *= num;
if(tmp>rst) rst=tmp;
pt++;
}
pt += (gap+1);
}
printf("%d\n",rst);
return 0;
}
格式化、
发表于 2017-6-7 17:18:57
public static void main(String[] args) {
String str = "7316717653133062491922511" +
"9674426574742355349194934969835" +
"20312774506326239578318016984801869" +
"478851843858615607891129494954595017" +
"379583319528532088055111254069874715852" +
"3863050715693290963295227443043557668966" +
"48950445244523161731856403098711121722" +
"38311362229893423380308135336276614282" +
"80644448664523874930358907296290491560" +
"4407723907138105158593079608667017242" +
"7121883998797908792274921901699720888" +
"0937766572733300105336788122023542180" +
"9751254540594752243525849077116705560" +
"1360483958644670632441572215539753697" +
"8179778461740649551492908625693219784" +
"686224828397224137565705605749026140797" +
"296865241453510047482166370484403199890008895243450" +
"65854122758866688116427171479924442928230863465674813" +
"9191231628245861786645835912456652947654568284891288314" +
"26076900422421902267105562632111110937054421750694165896" +
"04080719840385096245544436298123098787992724428490918884" +
"580156166097919133875499200524063689912560717606058861164" +
"671094050775410022569831552000559357297257163626956188267" +
"0428252483600823257530420752963450";
String ss[]=str.split("0");
List<String> zz=new ArrayList<String>();
for(String ssz:ss){
if(ssz.length()>13){
zz.add(ssz);
}
}
List<int[]> arr=new ArrayList<int[]>();
for(int j=0;j<zz.size();j++){
String num=zz.get(j);
int sums[]=new int;
int sum=1;
for(int i=0;i<num.length();i++){
sums=Integer.parseInt(new String(new char[]{num.charAt(i)}));
}
arr.add(sums);
}
long max=0;
int number[]=new int;
for (int[] is : arr) {
for (int i=0;i<is.length-12;i++) {
long sum=1;
for (int j = i; j <i+13; j++) {
sum*=is;
}
if(sum>max){
max=sum;
int x=0;
for (int j = i; j <i+13; j++) {
number=is;
x++;
}
}
}
}
System.out.println(max);
for (int i : number) {
System.out.println(i);
}
}
水冢
发表于 2017-8-23 19:41:14
为什么我的是3780710640#include <stdio.h>
#include <string.h>
//euler 8
int main(void){
int i, j;
unsigned long int max = 0;
unsigned long n = 1;
char str[] = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";
int len = strlen(str);
for (i = 0; i < len - 13; i++){
for (j = 0; j < 13; j++){
n *= str - '0';
}
if (n > max){
max = n;
}
n = 1;
}
printf("%lld", max);
return 0;
}
BngThea
发表于 2017-9-12 14:26:15
target = '''73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450'''
s = target.replace('\n','')
total = 0
for i in range(987):
mutiple = 1
for j in range(13):
mutiple *= int(s)
if not mutiple:
break
total = max(mutiple,total)
print(total)
jerryxjr1220
发表于 2017-9-30 11:31:18
AArdio编写:
import console;
import time.timer
console.setTitle("Test");
time.timer.start();
var s = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"
function tolist(s) begin
var tab = {}
for i=1;#s begin
table.push(tab,string.sub(s,i,i));
end;
return tab
end;
var list = tolist(s);
var max = 0;
for i=1;#list-12 begin
var tmp = 1
for j=0;12 begin
tmp *= tonumber(list)
end;
max = math.max(max,tmp)
end;
console.print(max);
console.print(time.timer.endTick(), '毫秒');
23514624000
3.714270055294毫秒
由我们主宰
发表于 2018-3-19 22:30:37
#include<stdio.h>
#include<stdlib.h>
#define NUM 1001
int compare(int m[],int max[],int digit,int now)
{
int i=now;
if(digit>now)
{
return 1;
}
else if(digit==now)
{
for(;i>=0;i--)
{
if(m>max)
{
return 1;
}
}
return 0;
}
else
return 0;
}
int main(void)
{
FILE *fp;
char num;
intn,t,m,max={0};
int i,j,temp,k=0,start,carry,digit=1,now=7;
if(!(fp=fopen("1.txt","r")))
{
printf("读写错误!");
exit(1);
}
fgets(num,NUM,fp);
for(i=0;i<NUM-1;i++)
{
n=num-'0';
printf("%d",n);
}
printf("\n");
for(i=0;i<NUM-13;i++)
{
m=1;
digit=1;
for(k=1;k<20;k++)
{
m=0;
}
for(j=i;j<i+13;j++)
{
for(k=1,carry=0;k<=digit;k++)
{
temp=m*n+carry;
m=temp%10;
carry=temp/10;
}
while(carry)
{
m[++digit-1]=carry%10;
carry=carry/10;
}
}
if(compare(m,max,digit,now))
{
now=digit;
for(k=0;k<20;k++)
{
max=m;
}
k=0;
start=i;
for(j=i;j<i+13;j++)
{
t=n;
k++;
}
}
}
printf("\n从第%d开始\n",start);
for(k=now-1;k>=0;k--)
{
printf("%d",max);
}
printf("\n");
for(k=0;k<13;k++)
{
printf("%d",t);
}
printf("\n");
fclose(fp);
system("pause");
return 0;
}
阿bang
发表于 2018-3-27 15:17:52
import time
series = '''
7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450'''
def product(str1):
result = 1
if '0' in str1:
return 0
else:
for i in str1:
result *= int(i)
return result
start = time.time()
maxresult = product(series)
for i in range(2, len(series) - 13):
str1 = series
maxresult = max(maxresult, product(str1))
print maxresult
print time.time() - start
还有可优化的点是,如果新加入的数比之前剔除的数小,那么新的这组数的乘积就不用算了。
发表于 2018-3-27 16:23:54
<url>http://canadianpharmaciesrxbest.com/|pharmacy online</url>, <url>http://canadianonlinepharmacygen.com/|canadian drugstore online</url>, <url>http://canadianpharmaciesdiscount.com/|discount pharmacy</url>, <url>http://canadianpharmacieslink.com/|ed meds online</url>