2011软件设计大赛题(四)

2014-11-24 03:14:03 · 作者: · 浏览: 9
tbit(44444);

setbit(55555);

setbit(66666);

setbit(77777);

setbit(88888);

setbit(99999);

cout<

cout<<"please input the number:"<

cin>>i;

if(getbit(i)==0)//表明这个数还没进入任何一个圈,要进行判断

{

findCyle(i);

}

return 1;

}

import java.util.ArrayList;

import java.util.List;

public class CycleTest {

public static int computer(String str,List list){

int min = 0;

int max = 0;

int substraction = 0;

String s1 = "";

String s2 = "";

String s3 = "";

int[] a = new int[str.length()];

int[] b = new int[str.length()];

for(int i = 0 ;i < str.length(); i++){

int x = Integer.parseInt(str.charAt(i)+"");

a[i] = x;

b[i] = x;

}

for(int i = 0 ;i < a.length; i++){

for(int j = a.length - 1 ;j > i;j--){

if(a[j] < a[j - 1]){

int temp = a[j];

a[j] = a[j - 1];

a[j - 1] = temp;

}

}

}

for(int i = 0 ;i < b.length; i++){

for(int j = b.length - 1 ;j > i;j--){

if(b[j] > b[j - 1]){

int temp = b[j];

b[j] = b[j - 1];

b[j - 1] = temp;

}

}

}

for(int i = 0;i < a.length;i++){

s2 += a[i]+"";

}

//Get the minimum

min = Integer.parseInt(s2);

// System.out.println(min);

for(int i = 0;i < b.length;i++){

s3 += b[i];

}

//Get the maximum

max = Integer.parseInt(s3);

// System.out.println(max);

substraction = max - min;

list.add(substraction);

for(int i = 0;i < list.size()-1; i++){

if((Integer)list.get(i) == substraction){

// System.out.println(list);

return 0;

}

}

s1 = (max - min)+"";

// System.out.println(list);

return computer(s1,list);

}

public static void main(String[] args) {

String s1 = "57238";

List list = new ArrayList();

computer(s1,list);

list.remove(list.size()-1);

System.out.println(list);

}

}

试试吧,我也是刚做的!

回答者: 哭淳| 一级| 2011-4-27 12:44

import java.util.Arrays;

public class MyTest10 {

public static void main(String args[])

{

int f=Sort(array(34256));

int x=Sort(array(34256));

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

{

x=Sort(array(x));

System.out.print(x+" ");

}

}

static int []array(int n)

{

int a[]=new int[5];

int i=0;

int m=n;

while(i<5)

{

a[i]=m%10;

if(m%10==0)

a[i]=0;

m/=10;

i++;

}

return a;

}

static int Sort(int a[]){

Arrays.sort(a);

String min="";

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

{

min=min+String.valueOf(a[i]);

}

int Min=Integer.parseInt(min);

StringBuffer sb=new StringBuffer(min).reverse();

String max=new StringBuffer(sb).toString();

int Max=Integer.parseInt(max);

int c=Max-Min;

return c;

}

}

11. 程序设计(满分9 分)

当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。

该校验的过程:

1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

例如,卡号是:5432123456788881

则奇数、偶数位(用红色标出)分布:5432123456788881

奇数位和=35

偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。

最后35+35=70 可以被10整除,认定校验通过。

请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。

比如,用户输入:356827027232780

程序输出:成功

题目:当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。

该校验的过程:

1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

例如,卡