import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class BigIntegerAddition {
/**
* 题目:java实现两个大数相加,可能存在溢出。
* 如123456789 + 987654321 返回 1111111110
* 1.直接用BigInteger
* 2.模拟手算加法,进位相加
*/
public static void main(String[] args) {
String x="23456789";
String y="987654321";
//use BigInter
BigInteger a=new BigInteger(x);
BigInteger b=new BigInteger(y);
BigInteger c=a.add(b);
System.out.println(c.toString());
//"reinvent the wheel"
String d=add(x,y);
System.out.println(d);
}
//return x+y. Have not considered the negative number yet.
public static String add(String x,String y){
if(x==null||y==null){
return null;
}
if(!isNumeric(x)||!isNumeric(y)){
return null;
}
if(x.equals("0")){
return y;
}
if(y.equals("0")){
return x;
}
if(x.length()>y.length()){
String tmp=x;
x=y;
y=tmp;
}
x=addZeroToFirst(x,y.length());
String z=addHelp(x,y);
return z;
}
public static String addHelp(String x,String y){
String z="";
int len=x.length();
int[] a=toIntArray(x);
int[] b=toIntArray(y);
int[] c=new int[len+1];
int d=0;//to carry. No need to use int[]
for(int i=0;i<len;i++){
int tmpSum=a[len-1-i]+b[len-1-i]+d;
c[len-i]=tmpSum%10;
d=tmpSum/10;
}
c[0]=d;
StringBuilder sb=new StringBuilder();
for(int i=0;i<=len;i++){
sb.append(c[i]);
}
if(c[0]==0){//delete the first '0' in result string
z=sb.substring(1);
}else{
z=sb.toString();
}
return z;
}
//String - toCharArray - toIntArray
public static int[] toIntArray(String str){
int len=str.length();
int[] result=new int[len];
for(int i=0;i<len;i++){
result[i]=str.charAt(i)-'0';
}
return result;
}
//("123",5)-->"00123"
public static String addZeroToFirst(String str,int length){
StringBuilder sb=new StringBuilder();
int diff=length-str.length();
while(diff>0){
sb.append("0");
diff--;
}
sb.append(str);
return sb.toString();
}
public static boolean isNumeric(String str){
Pattern p=Pattern.compile("[0-9]*");
Matcher isNum=p.matcher(str);
return isNum.matches();
}
}
|
<?php
$arr = array(12,35,56,2,6,135,67,909,8907);
$rs = qsort($arr);
print_r($rs);
function bsort($arr){
$count = count($arr);
if($count <= 1) return $arr;
for($i=0; $i<$count; $i++){
for($j=$count-1; $j>=$i; $j--){
if($arr[$j] < $arr[$j-1]){
$tmp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $tmp;
}
}
}
return $arr;
}
function qsort($arr){
$count = count($arr);
if($count <= 1) return $arr;
$key = $arr[0];
$left_arr = array();
$mid_arr = array();
$right_arr = array();
foreach($arr AS $v){
if($v>$key){
$right_arr[] = $v;
}else if($v == $key){
$mid_arr[] = $v;
}else{
$left_arr[] = $v;
}
}
$left_arr = qsort($left_arr);
$right_arr = qsort($right_arr);
return array_merge($left_arr, $mid_arr, $right_arr);
}
|
<?php
/*
* @Date 2011-2-24
* @Author hudeyong926
*/
session_start ();
function getCode($length = 32, $mode = 0) {
switch ($mode) {
case '1' :
$str = '123456789';
break;
case '2' :
$str = 'abcdefghijklmnopqrstuvwxyz';
break;
case '3' :
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
break;
case '4' :
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
break;
case '5' :
$str = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789';
break;
case '6' :
$str = 'abcdefghijklmnopqrstuvwxyz1234567890';
break;
case '7' ://中文验证码
break;
default :
$str = 'ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789';
break;
}
$result = '';
for($i = 0; $i < $length; $i ++) {
if ($mode == 7) {
$str [$i] = chr ( mt_rand ( 176, 215 ) ) . chr ( mt_rand ( 161, 249 ) );
$str [$i] = iconv ( "GB2312", "UTF-8", $str [$i] ); //imagettftext是utf-8的,所以先转换下
$result .= $str [$i];
} else {
$l = strlen ( $str ) - 1;
$num = rand ( 0, $l );
$result .= $str [$num];
}
}
return $result;
}
//建立验证图片
function createAuthNumImg($randStr, $imgW = 100, $imgH = 40, $fontName) {
header ( "content-type: image/png" );
$image = imagecreate ( $imgW, $imgH );
$color_white = imagecolorallocate ( $image, 255, 255, 255 );
$color_gray = imagecolorallocate ( $image, 228, 228, 228 );
$color_black = imagecolorallocate ( $image, 255, 102, 204 );
$color_b = imagecolorallocate ( $image, 0, 0, 0 );
for($i = 0; $i < 1000; $i ++) {
imagesetpixel ( $image, mt_rand ( 0, $imgW ), mt_rand ( 0, $imgH ), $color_gray );
}
imagerectangle ( $image, 0, 0, $imgW - 1, $imgH - 1, $color_gray );
for($i = 10; $i < $imgH; $i += 10) {
imageline ( $image, 0, $i, $imgW, $i, $color_gray );
}
imagettftext ( $image, 16, 5, 3, 25, $color_b, $fontName, $randStr );
for($i = 10; $i < $imgW; $i += 10) {
imageline ( $image, $i, 0, $i, $imgH, $color_gray );
}
imagepng ( $image );
imagedestroy ( $image );
}
$verifyCode = GetCode ( 5, 6 );
$_SESSION ['VERIFY_CODE'] = strtoupper ( $verifyCode );
createAuthNumImg ( $verifyCode, 110, 30, "font.ttf" ); //字体存放路径,如果你没有文件就去C:\WINDOWS\Fonts文件中找一个吧。
?>
|