shell练习--PAT题目1001:卡拉兹(Callatz)猜想(失败案例)
卡拉兹(Callatz)猜想:
对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 ( 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (,以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……
我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?
输入格式:
每个测试输入包含 1 个测试用例,即给出正整数 n 的值。
输出格式:
输出从 n 计算到 1 需要的步数。
好久没有写shell的脚本了,然后再pat上找题目学习,练练手,各种问题。
read -p "input n:" n
if [ $n -gt 0 -a $n -lt 1000 ]
then
echo "$n is right"
n1=$n
else
echo "$n is error"
exit
fi i=0
while [ $n != 1 ]
do
if [ `expr $n % 2` -eq 0 ]
then
n=`echo "$n/2" |bc `
else
n=`echo "((3*$n)+1)/2" |bc `
fi
let i+=1
done
echo "计算输入n值,当n=${n1}时,共计执行了${i}步获取 n=1的值!"
这段代码4个测试点全错,然后我直接把循环写到了判断里面
read n
if [ $n -gt 0 -a $n -le 1000 ]
then
i=0
while [ $n != 1 ]; do
if [ `expr $n % 2` -eq 0 ]
then
n=`echo "$n/2" |bc `
else
n=`echo "((3*$n)+1)/2" |bc `
fi
let i+=1
done
echo $i
else
exit
fi
4个点错了2个。
测试点分析(不知道是怎么判断的,所以慢慢改)
第四个,考察的是答案范围:题目中的n为正整数且不能超过1000,推断出 0<n<=1000的,满足此条件满足;
if [ $n -gt 0 -a $n -le 1000 ]
嗯,看了C语言代码又去掉了if条件判断,发现这里对数字范围判断不是测试点。
第三个测试点,对while格式的考察,参照示例修改while语句之后,通过;
while read i; do
echo $((${i/ /+}))
done
改成:
while [ ${n} != 1 ];do
第二个测试点,不知道考察的是什么。
第一个测试点,也不知道考察的是什么。
脚本编写过程中的问题:
1.奇偶性判断问题,与sql中的mod函数混淆了;
2.关于算术运算,一元方程用 expr还是bc 工具有点疑问,expr使用 运算符前后需要空格;
3.算术运算中,运算符的使用问题 % 为取余。
补充python版本:
#!/usr/bin/python3
#-*- coding:utf-8 -*- #n=int(input("请输入数字n:")) 不要做多余的注释,不然不会通过
n=int(input())
count=0 while n != 1:
if n%2==0: #需要记住 取模是% ,地板除是//
n=n/2
else:
n=(3*n+1)/2 #此处的乘号需要写出来
count=count + 1 print(count)
shell练习--PAT题目1001:卡拉兹(Callatz)猜想(失败案例)的更多相关文章
- 卡拉兹(Callatz)猜想
题目描述 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步 得到n=1.卡拉兹在195 ...
- shell练习--PAT题目1005:继续(3n+1)猜想(全绿失败喜加一)
卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...
- shell练习--PAT题目1003:我要通过!(成功案例)
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: ...
- shell练习--PAT题目1007:关于素数对(失败案例)
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素 ...
- shell练习--PAT题目1008:数组元素循环右移问题 (失败案例,运行超时)
一个数组A中存有N(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A ...
- 2019年7月25日 shell练习--PAT题目1006:换个格式输出整数(失败案例)
让我们用字母 B 来表示“百”.字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<),换个格式来输出任一个不超过 3 位的正整数.例如 234 应该被输出为 BBSSS123 ...
- shell练习--PAT题目1004: 成绩排名 !(失败案例,shell运行超时)
读入 n(>)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓 ...
- shell练习--PAT题目1002:写出这个数(失败案例)
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1. 输出格式: 在一行内输出 n 的 ...
- PAT 乙级 1001.害死人不偿命的(3n+1)猜想 C++/Java
1001 害死人不偿命的(3n+1)猜想 (15 分) 题目来源 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复 ...
随机推荐
- Struts2测试题
今天给大家看一套我最近做的一套关于Struts2的题: 1.以下关于jQuery说法错误的选项是( D ). A.“$”为jQuery脚本库的默认全局变量名,即“$” = “jQuery” B.$.a ...
- Jmeter之内存溢出解决办法
使用Jmeter进行压力测试会遇到一段时间后报内存溢出的错误,导致Jmeter卡死.这是因为Jmeter默认的HEAP配置的太小了,解决办法如下: 1.Windows环境 修改jmeter.bat ...
- .net 部署到服务端IIS,Process调用exe程序无法运行问题解决
场景: 开发某一功能将html内容转换为pdf,采用第三方插件wkhtmltopdf.exe进行转换.在本地调试正常运行,部署到服务端后文件没有正常生成. IIS中,Process打不开cmd程序,程 ...
- 【Qt开发】Qt中图像的显示与基本操作
Qt可显示基本的图像类型,利用QImage.QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放.旋转). 1. Qt可显示的图像类型 参考Qt的帮助文档,可支持的类型,即 ...
- 无法在发送 HTTP 标头之后进行重定向
public ActionResult Index2() { Response.Buffer = true; Response.Clear(); return Redirect("/Wech ...
- 第四周课程总结&第二次实验报告
实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性 ...
- [DS+Algo] 005 三种简单排序及其代码实现
目录 1. 冒泡排序 BubbleSort 1.1 算法描述 1.2 性能分析 1.3 Python 代码实现 2. 选择排序 SelectionSort 2.1 算法描述 2.2 选择排序的主要优点 ...
- [转帖]mysql.sock的作用
mysql.sock的作用 链接:http://blog.itpub.net/28602568/viewspace-1797619/ 标题:mysql.sock的作用 作者:lōττéry©版权所有[ ...
- SGU 521 North-East ( 二维LIS 线段树优化 )
521. "North-East" Time limit per test: 0.5 second(s)Memory limit: 262144 kilobytes input: ...
- hdu1465不easy系列之中的一个(错排)
版权声明:本文为博主原创文章,未经博主同意不得转载. vasttian https://blog.csdn.net/u012860063/article/details/37512659 转载请注明出 ...