问题描述
金色十月线上编程比赛第一题:小女孩数数发布公司:有效期:CSDN2014-10-14至2015-10-14难度等级:答题时长:编程语言要求:120分钟CC++JavaC#题目详情【金色十月线上编程比赛规则】一个小女孩正在用左手手指数数,从1数到n。她从拇指算作1开始数起,然后,食指为2,中指为3,无名指为4,小指为5。接下来调转方向,无名指算作6,中指为7,食指为8,大拇指为9,如此反复。问最后会停在那个手指上?用编号1、2、3、4、5依次表示大拇指、食指、中指、无名指、小指。输入格式:输入多组数据。每组数据占一行,只包含一个整数n(1<=n<=1000000000)。输出格式:每组数据占一行,只包含一个介于1和5之间的整数,表示最后停留的手指。答题说明输入样例:1101000000000输出样例:122我提交的代码//请不要使用package,这将会导致您的代码不能通过测试importjava.util.Scanner;publicclassb{publicstaticvoidmain(String[]args){int[]k=newint[3];int[]p={1,2,3,4,5,4,3,2};for(inti=0;i<3;i++){k[i]=newScanner(System.in).nextInt();if(k[i]<1||k[i]>1000000000){i--;}}for(inti=0;i<3;i++){intt=k[i]%8;if(t==0){System.out.println(2);}else{System.out.println(p[i]);}}}}输入多组数据应该怎么写呢?不懂
解决方案
解决方案二:
发错代码了是这个importjava.util.Scanner;publicclassb{publicstaticvoidmain(String[]args){int[]k=newint[3];int[]p={1,2,3,4,5,4,3,2};for(inti=0;i<3;i++){k[i]=newScanner(System.in).nextInt();if(k[i]<1||k[i]>1000000000){i--;}}for(inti=0;i<3;i++){intt=k[i]%8;if(t==0){System.out.println(2);}else{System.out.println(p[t-1]);}}}}
解决方案三:
publicstaticvoidmain(String[]args){int[]in=newint[3];int[]out={1,2,3,4,5,4,3,2};intk=0;while(true){intm=newScanner(System.in).nextInt();if(m>0&&m<10000000){in[k]=m;k++;if(k>=3){break;}}else{continue;}}for(inti=0;i<3;i++){intt=in[i]%8;if(t==0){System.out.println(2);}else{System.out.println(out[t-1];}}}
解决方案四:
intdigit=5;//手指数intnum=newScanner(System.in).nextInt();intresult;//把输入的数整除手指数得到的数如果是单数倒着数如果是双数正着数(感觉表达不是很明白)intremainder=num%digit;if(num/digit%2==0){result=remainder;}else{result=digit-remainder+1;}
纯手打编译可能有错思路就是这样非常简单
解决方案五:
一个周期是8,n%8
解决方案六:
除第一次是9次,其余都是以8为周期