4.18趣味百题12题

Posted galileo9527

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.18趣味百题12题相关的知识,希望对你有一定的参考价值。

一 问题描述

一个人拥有x现金 要存y年(y年后取出) 银行有几款不同的期限的月息利率 超出初始存款的钱会给利息(与原题不同 的拓展)

求出利息最多的方案.

月利息   期限

0.63%   一年

0.66%   两年

0.69%   三年

0.75%   五年

0.84%   八年

 二 思路设计

每种方案单独设计成函数 返回当时的本金加利息

用穷举法 搭配不同方法达到y年 比较出利息最多的方案

最外层套用期限最长的存法 因为月利息最大

三 流程图

 

四  代码实现

 

#include<iostream>
#include<iomanip>
using namespace std;
double way8(double a);
double way5(double a);
double way3(double a);
double way2(double a);
double way1(double a);
int main()

int i=0,j=0,k=0,l=0,m=0;
double x,x1; int y; double xm=0; int i2,j2,k2,l2,m2; //最大方案放置区域
cin>>x>>y;//存入多少钱和多少年
for(i=0;i<=y/8;i++)

for(j=0;j<=(y-i*8)/5;j++)

for(k=0;k<=(y-i*8-j*5)/3;k++)

for(l=0;l<=(y-i*8-j*5-k*3)/2;l++)

m=y-i*8-j*5-k*3-l*2;
x1=x;
for(int t=0;t<i;t++)

x1=way8(x1);

for(int t=0;t<j;t++)

x1=way5(x1);

for(int t=0;t<k;t++)

x1=way3(x1);

for(int t=0;t<l;t++)

x1=way2(x1);

for(int t=0;t<m;t++)

x1=way1(x1);

if(x1>xm)

xm=x1;
i2=i;
j2=j;
k2=k;
l2=l;
m2=m;





cout<<"最佳方案为:"<<endl;
cout<<"八年方案存次数:"<<i2<<endl;
cout<<"五年方案存次数:"<<j2<<endl;
cout<<"三年方案存次数:"<<k2<<endl;
cout<<"两年方案存次数:"<<l2<<endl;
cout<<"一年方案存次数:"<<m2<<endl;
cout<<fixed<<setprecision(2)<<"此时储蓄额为:"<<xm;

 

return 0;

double way8(double a)

for(int i=0;i<8;i++)

for(int j=0;j<12;j++)

a+=a*0.0084;


return a;

double way5(double a)

for(int i=0;i<5;i++)

for(int j=0;j<12;j++)

a+=a*0.0075;


return a;

double way3(double a)

for(int i=0;i<3;i++)

for(int j=0;j<12;j++)

a+=a*0.0069;


return a;

double way2(double a)

for(int i=0;i<2;i++)

for(int j=0;j<12;j++)

a+=a*0.0066;


return a;

double way1(double a)

for(int i=0;i<1;i++)

for(int j=0;j<12;j++)

a+=a*0.0063;


return a;

python-趣味百题3

等差素数数列:类似7、37、67、97;107、137、167、197这样由素数组成的数列。
素数数列具有项数的限制,一般指素数数列的项数有多少个连续项,最多可以存在多少个连续项
编程找出100以内的等差素数数列
思路:
1.筛法找出100以内所有素数
2.对于素数list内两两组合,构造等差数列a0,a1项
3.计算出a2,查表判断a2是否有素数,是素数则能构造成素数等差序列,计算a3...
def findAllPrime(n):
    pt = [True] * n
    prime = []
    for p in range(2,n):
        if not pt[p]:continue
        prime.append(p)
        for i in range(p * p, n, p):
            pt[i] = False
    return prime,pt
prime, pt = findAllPrime(100)
print prime
for i in range(len(prime)):
    for j in range(i+1,len(prime)):
        a0,a1 = prime[i],prime[j]
        an = a1 + a1-a0
        s =[]
        while an < 100 and pt[an]:
            s.append(an)
            an+=a1-a0
        if s:
            print [a0,a1] + s




























以上是关于4.18趣味百题12题的主要内容,如果未能解决你的问题,请参考以下文章

Python 趣味百题

python-趣味百题

python-趣味百题4

python-趣味百题3

python百题大冲关

14Pandas 百题大冲关