随手记1
最近做欧拉计划第八题,遇到了很多很多的问题,害,不过万能的网络太好使了,终于解决了一点点,好嗨哟
第八题代码
A='7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450';
【5】这个字符串好长啊,如何输入呢
b=textscan(A,'%c',1000);%【1】之前搜到一种解答,用了strread,但是matlab建议用textscan啊,可是直接用textcan又不对。
c=str2num(char(b))';
m1=[];n=0;
format long 【2】matlab直接保留了四位小数,但是不符合要求呀,咋整
for i=1:988【3】这里和下方的取值要对应,不然又会出现报错,超出索引
m=c(:,i:i+12);
M=prod(m);【4】这是一个函数,可以算出矩阵中每一个数的乘积
if(M>n)
n=M;
else
M=M;
end
end
【1】
首先,由于要将这个字符串A分成一个个数,所以要用textscan(读或者strread(从字符串中读取格式化数据),但是从网上搜索strread的时候,会出现“不推荐使用strread,请改用textscan"。
textscan的基本语法是:
C = textscan(fid, 'format')
C = textscan(fid, 'format', N)
其中,fid是foropen命令返回的文件标识符,在这个位置是之前用到的字符串,或者是文件。format是要读取的格式,例:%d,%c……。N代表以这种格式读多少次.要注意这个函数的输出,是一个细胞数组。
C= textscan(fileID,formatSpec) 将已打开的文本文件中的数据读取到元胞数组 C
【2】
所以我们要把细胞型的数组转化为矩阵,一般转换有两种办法
1.cell2mat(a)
在这个问题中, 我们可以用c=cell2mat(b); d=str2num(c)';先把它转换为string,再用str2num
2.str2num(char(cell))
小tip:char的用法
S=char(C):C是元胞型字符数组,c中的每一个元素放置在字符数组s的行中,用cellstr可以转换回来。
S=char(x):把表示字符的非负整数x转换为字符串数组s。
S=char(t1,t2,t3…):生成字符型数组S把t1,t2,t3,...作为行,为了生成有效的矩阵自动在每个字符型数组加倍添加空格
【5】可以把长的字符串分为几行输入,用中括号[ ]将字符串括住,每一行都上单引号,除去最后一行外每一行的行尾都用…