您的位置:首页 > 其它

打印1到最大的N位数

2014-01-17 15:55 274 查看
题目描述:

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

输入:

每个输入文件仅包含一组测试样例。

对于每个测试案例,输入一个数字N(1<=N<=5)。

输出:

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

样例输入:
1


样例输出:
1
2
3
4
5
6
7
8
9


解法一:借助数学函数做

--------------------------------------------------

update:

pow()函数的原型:

#include <math.h>

       double pow(double x, double y);/*注意是double*/
       float powf(float x, float y);
       long double powl(long double x, long double y);

       Link with -lm.

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       powf(), powl():
           _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
           or cc -std=c99

DESCRIPTION
       The pow() function returns the value of x raised to the power of y.


AC代码:

#include<stdio.h>
#include<math.h>
 
int main() {
    int n, i;
    double max = 1.0;
    while(scanf("%d", &n) != EOF) {
        while(n--) {
            max += 9*pow(10,n);
        }
        max = (int)max;
        for(i = 1; i < max; i++) {
            printf("%d\n", i);
        }
    }
    return 0;
}
 
/**************************************************************
    Problem: 1515
    User: wusuopuBUPT
    Language: C
    Result: Accepted
    Time:40 ms
    Memory:1004 kb
****************************************************************/


解法二:

#include<stdio.h>
 
int main() {
    int n, i, max = 0;
    while(scanf("%d", &n) != EOF) {
        for(i = 0; i < n; i++) {
            max = (10*max + 9);
        }
        for(i = 1; i <= max; i++) {
            printf("%d\n", i);
        }
    }
    return 0;
}
 
/**************************************************************
    Problem: 1515
    User: wusuopuBUPT
    Language: C
    Result: Accepted
    Time:40 ms
    Memory:912 kb
****************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: