题目描述:

给定一个数字N,打印从1到最大的N位数。

输入:

每个输入文件仅包含一组测试样例。
对于每个测试案例,输入一个数字N(1<=N<=5)。

输出:

对应每个测试案例,依次打印从1到最大的N位数。

样例输入:

 

样例输出:


解题思路:

  直接通过n快速指定比最大的那个数大1的数,10,100,1000,10000,100000....

  输出,就行了...

代码:

#include <stdio.h>
int main(void){
int n,i;
while(scanf("%d",&n)!=EOF && n>= && n<=){
i = n;
int m = ;
while(i--){
m *= ;
}
for(i=;i<m;i++)
printf("%d\n",i);
}
return ;
}
/**************************************************************
Problem: 1515
User: xhalo
Language: C
Result: Accepted
Time:40 ms
Memory:912 kb
****************************************************************/

  写出上面的代码,那么你就正式的掉入面试官的坑了。如果这道题的位数不是5,而是10,或者100呢。正常的int显然是无法满足的。

  因此可以考虑使用字符串或者数组表示大数据。

  下面给出了使用数组的表示方法:

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int num[];
int add(int n);
int main(void){
int n,i;
while(scanf("%d",&n)!=EOF && n>= && n<=){
memset(&num,,sizeof(int)*);
while(!add(n)){
int flag = ;
for(i=-n;i<;i++)
if(num[i] != || flag){ //如果是前面的零,则不输出;如果是后面的零,则输出
flag = ;
printf("%d",num[i]);
}
printf("\n");
}
}
return ;
}
int add(int n){
int isoverflow = ;
int carry = ;
int i;
for(i=;i>=-n;i--){
num[i] += carry;
if(i == )
num[i]++; if(num[i] >= ){
if(i == -n){
isoverflow = ;
}else{
num[i] -= ;
carry = ;
}
}else{
break;
}
}
return isoverflow;
}
/**************************************************************
Problem: 1515
User: xhalo
Language: C
Result: Accepted
Time:110 ms
Memory:912 kb
****************************************************************/

最新文章

  1. javascript闭包和作用域链
  2. PHPExcel
  3. maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
  4. 关于TxQBService报的错,腾讯你真牛B啊
  5. twitter通过oAuth验证获取json数据
  6. python3爬虫 url管理器
  7. frame和bounds的区别与联系
  8. #import vs. @class
  9. Nginx模块学习之————accesskey权限模块使用(简单的m3u8防盗链)
  10. OpenRTSP的使用
  11. treeview树形菜单,递归
  12. js动态添加Div
  13. Javascript技巧实例精选(1)—鼠标选择动态改变网页背景颜色
  14. 反编译app方法
  15. Ubuntu Linux 环境变量
  16. css3波纹特效、H5实现动态波浪
  17. 我理解的websocket
  18. python之路——15
  19. 基础知识系列☞关键字→virtual
  20. iOS10原生的语音转文字功能

热门文章

  1. windows下python安装face_recognition模块
  2. REST、DRF(View源码解读、APIView源码解读)
  3. P1856 [USACO5.5]矩形周长Picture
  4. (1)Java多线程编程核心——Java多线程技能
  5. java 创建 HMAC 签名
  6. ThreadPoolExecutor线程池进阶使用
  7. unable to create new native thread 问题
  8. jenkins maven tomcat做持续集成
  9. linux进程学习-进程描述符的存储
  10. Spring笔记06(Spring AOP的底层实现动态代理)