【趣味题-07】20240121他的第一周工资(精准推测工资)

发布时间:2024年01月22日

背景需求

设计过程:

AI写了很多的答案,但是都不正确

于是我去查看了网上的正确答案——47.41美元

此外,题目的0.99涉及了浮点数,非整数,无法range遍历

最后终于有一个答案正确的代码

通过反复测试,终于写出一个适合的代码

代码展示:



'''
3、他的第一份工作
“嗨!约翰尼斯,”星期天乔在街上遇到一个年轻人向他喊道,“好久不见,我听说你开始工作啦!”
“几个星期了,”约翰尼斯回答道,“这是一份计件工作,我干得挺好的。第一星期我得了四十多美元,而且后来每个星期都比前一个星期多赚99美分。”
“这真是巧事!”乔笑了笑并继续说,“愿你一如继往都能这样!”
“我估计用不了多久我一个星期便能赚到60美元,”年轻人告诉乔,“自从开始工作到现在,我已经赚了整整407美元。这的确不坏!”
试问,约翰尼斯第一个星期赚了多少?

# '''

  # 根据AI推荐的写法
'''
    # total_earning = 407。00
    # x = (total_earning - (1 + 2 + 3 + 4 + 5 + 6+7)*0.99 ) / 8
    # print(" @ 的值为:", x, "美元")  
    # 正好等于47.41美元
    根据其中“周数累加”的方法,推算第一周的工资

'''
# 一周40多美元(不确定数字),一共赚了407,大约10周
n=int(407/40)

# 可能有10周,周数累加
day=0
days=[]
result1=[]
result2=[]
result3=[]
# [1,2,3,4,5,6,7,8,9,10]
for  i in range(n):
    day+=1
    days.append(day)    
    # print(sum(days))
    c=int(sum(days))
    #     1
        # 3
        # 6
        # 10
        # 15
        # 21
        # 28
        # 36  
    
    # x = (total_earning - (1 + 2 + 3 + 4 + 5 + 6+7)*0.99 ) / 8
    # 用上面的公式进行倒推提取周数的累加数字和除以的数字(周数+1)

    x=(407.00-c*0.99)/(int(len(days)+1))
    if 40<x<50:        # 工资是40多美元
        print('第1周工资数可能是',round(x,2),'美元')
        # 第一周工资数 41.26222222222222 美元,所以要加round
        print('可能一共工作了',len(days),'周')
        result1.append(round(x,2))
        result2.append(len(days))
        result3.append(c)
    else:
        pass
        # 第1周工资数 47.41 美元
        # 一共工作了 7 周
        # 第1周工资数 41.26 美元
        # 一共工作了 8 周

# 验证结果是否正确
for f  in range(len(result1)):
    if result1[f]*(result2[f]+1)+result3[f]*0.99==407.00:
        print('约翰第1周工资数',result1[f],'元')
        print('约翰正好工作了',result2[f],'周')
    else:
        pass
    # 因为有两个40多美元,所以再列示计算是不是等于407.00元
    # (1-8累加=36)*0.99+41.26*9=406.98  不等于407.00
    # (1-7累加=28)*0.99+41.47*8=407.00  等于407.00

    # 最终结果
    # 约翰第1周工资数 47.41 元
    # 约翰正好工作了 7 周

最终结果:

代码解析:

这种方法有点类似于52周递增存钱法。

但是它是根据总数倒退初始金额(第一周的存款金额)

主要关键是根据总金额、倒退周次(存了几周)递增数量(每周增加0.99美元。

因为不知道周次,所以我将总金额除以大致的工资数(407/40)在0-10之间遍历提取周数,然后减法得到可能的第1周数量,并限制在40-50之间。本题有两个40多的工资数,所以再次通过公式验证,排除不符合的答案。

延伸题目

用这种方法可以推算公积金第一年缴费多少(获得精确数字)

问题:公积金账户余额23200,已知第一年大约交了2000多,每一年增加200元,问第一年公积金具体多少,一共交了几年



'''
3、公积金账户
小明公积金账户有23200公积金。第一年大约是2000多公积金,此后一年递增200元”
小明第一年公积金多少,一共交了几年?

# '''



n=int(23200/2000)
all=23200.00
zj=200.00


# 可能有10周,周数累加
day=0
days=[]
result1=[]
result2=[]
result3=[]
# [1,2,3,4,5,6,7,8,9,10]
for  i in range(n):
    day+=1
    days.append(day)    
    # print(sum(days))
    c=int(sum(days))

    x=(all-c*zj)/(int(len(days)+1))
    if 2000<x<3000:        # 工资是40多美元
        print('第1年公积金可能是',round(x,2),'人民币')
        # 第一周工资数 41.26222222222222 美元,所以要加round
        print('可能缴了公积金',len(days),'年')
        result1.append(round(x,2))
        result2.append(len(days))
        result3.append(c)
    else:
        pass
        # 第1年公积金可能是 2714.29 人民币
        # 可能缴了公积金 6 年
        # 第1年公积金可能是 2200.0 人民币
        # 可能缴了公积金 7 年

# 验证结果是否正确
for f  in range(len(result1)):
    if result1[f]*(result2[f]+1)+result3[f]*zj==all:
        print('小明第1年公积金',result1[f],'元')
        print('小明正好缴了公积金',result2[f],'年')
    else:
        pass
    
    # 最终结果
    # 小明第1年公积金 2200.0 元
    # 小明正好缴了公积金 7 年

小明初始第一年1月公积金是2200元,每年递增200元,到了第7年12月,正好获得23200元公积金。

文章来源:https://blog.csdn.net/reasonsummer/article/details/135734735
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。