http://ac.jobdu.com/problem.php?pid=1515
题目本身太low,还是趁这个机会练练大数运算比较好。下面提供两种写法,C++纯手写大数计算,和JAVA大数类,如果机考,还是JAVA大数类吧。
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <iostream>
using namespace std;
const int SIZE = 100+1;
int n;
void printNum(int num[]){
int flag=1;
for(int i=SIZE-n;i<SIZE;i++){
if(num[i] != 0){
flag=0;
}
if(!flag){
printf("%d", num[i]);
}
}
putchar('\n');
}
bool incNum(int num[]){
for(int j=SIZE-1;j>=SIZE-n;j--){
if(j == SIZE-1){
num[j]++;
}
if(num[j]>9){
num[j]-=10;
if(j - 1 >= SIZE-n ){
num[j-1]++;
}else{
return 0;
}
}else{
break;
}
}
return 1;
}
int main(){
int num[SIZE];
int tp[SIZE];
while(~scanf("%d",&n)){
memset(num,0,sizeof(num));
incNum(num);
do{
printNum(num);
//system("pause");
}while( incNum(num) );
}
return 0;
}
JAVA大数类
比较compareTo
< 返回值为<0
> 返回值为>0
= 返回值为==0
可以参考:
http://blog.csdn.net/u011026968/article/details/39668263
http://ly5633.iteye.com/blog/1218724
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
StringBuffer sb = new StringBuffer();
for(int i=0;i<n;i++){
sb.append("9");
}
BigInteger limit = new BigInteger(sb.toString());
BigInteger a = new BigInteger("1");
BigInteger b = new BigInteger("1");
while(a.compareTo(limit) < 0 || a.compareTo(limit) == 0){
System.out.println(a.toString());
a = a.add(b);
}
}
}
}