计算器趣题(一)

lz上个月在颓化学竞赛。玩计算器的时候,偶然想到一个游戏,在此放上,以飨读者。

题目描述

今有一计算器,它有且仅有 2 2 2 个按键 GT=,它们的描述如下:
GT:将计数器数值输出到屏幕;
=:将当前输入的表达式的值输出到屏幕,并将结果累加到计数器中。

一开始屏幕显示 1 1 1,且计数器初值为 0 0 0

求一种方案,可以用最少的按键次数,使屏幕显示 666 666 666

Solution \text{Solution} Solution

显然,按 666 666 666=,然后按 GT 即可显示 666 666 666 a n s = 667 ans=667 ans=667

考虑每次按下 = 对答案的贡献。显然,按下 = 的次数相同时,显示的数越大,对答案的贡献越大。换句话说,为了对答案产生相同的贡献,显示的数越大,需要按下 = 的次数就越少。

那搞到 333 333 333 以后,按一下 = 就好了呀。
可以呀。 a n s = 333 + 1 ( G T ) + 1 ( = ) + 1 ( G T ) = 336 ans=333+1(GT)+1(=)+1(GT)=336 ans=333+1(GT)+1(=)+1(GT)=336

哎。那,我如果只搞到 222 222 222 111 111 111,然后多按几下 = 的话,会比你更优啊。
可以啊。 a n s = 111 + 1 ( G T ) + 5 ( = ) + 1 ( G T ) = 118 ans=111+1(GT)+5(=)+1(GT)=118 ans=111+1(GT)+5(=)+1(GT)=118

哎,哎,哎, 111 111 111 好像可以分解哎。那如果我按 37 37 37=,再……
111 = 37 × 3 111=37\times3 111=37×3
真聪明。如果你按出 37 37 37,再搞个 18 18 18 出来,那也能凑出 666 666 666

“emmm…我明白了……”

此处部分请读者自行思考。下面给出答案。

最少次数是 46 46 46 次。其中一种方案是:

  1. 37 37 37=GT,屏幕显示 37
  2. ==GT,再按 ==GT,屏幕显示 333
  3. =GT,屏幕显示 666




那如果要按出 N N N 呢?且听下回分解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些C语言初学者可能会觉得有趣的编程题: 1. 猜数字游戏:编写一个程序,让用户猜一个范围内的随机生成的整数,直到猜中为止。程序应根据用户的猜测给出提示,告诉用户是猜大了还是猜小了。 2. 九九乘法表:编写一个程序打印出九九乘法表,即从1乘1到9乘9的所有结果。 3. 排序算法:实现常见的排序算法,如冒泡排序、选择排序或插入排序,并通过程序验证其正确性。 4. 计算器:编写一个简单的计算器程序,可以接受两个操作数和一个运算符,然后根据运算符执行相应的数学运算并输出结果。 5. 石头剪刀布游戏:编写一个石头剪刀布游戏的程序,让用户选择石头、剪刀或布,并与计算机进行对战,判断输赢并输出结果。 6. 简易登录系统:编写一个简单的登录系统,要求用户输入用户名和密码,并进行验证,如果匹配则输出登录成功,否则输出登录失败。 7. 生成斐波那契数列:编写一个程序,使用循环或递归方式生成斐波那契数列的前n项,并输出结果。 8. 统计字符个数:编写一个程序,接受一个字符串和一个字符,统计该字符在字符串中出现的次数,并输出结果。 9. 找出最大值和最小值:编写一个程序,接受一组整数输入,并找出其中的最大值和最小值,并输出结果。 10. 简易图书管理系统:编写一个简易的图书管理系统,包括图书的增加、删除、查询等功能,并可以将图书信息存储在文件中。 以上这些编程题可以帮助初学者巩固基本的编程知识和技能,并提高对C语言的理解和应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值