首页 > ACM题库 > 九度OJ > 九度 1064-反序数[数学]
2014
03-13

九度 1064-反序数[数学]

题目来源:2001年清华大学计算机研究生机试真题(第I套)

题目描述:
设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值
输入:
程序无任何输入数据
输出:
输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开
样例输入:
样例输出:
超过1111的话,就成5位数了。
#include<stdio.h>
int main()
{
        for(int i=1001;i<=1111;i++)
        if(9*i==i%10*1000+i/10%10*100+i/100%10*10+i/1000%10)
        printf("%d\n",i);
        return 0;
}

一般的方法:

#include <stdio.h>
#include <stdlib.h>

int reverse_number(int a);

int main()
{
        int n, rev, n9;

        for(n = 1000; n <= 9999; n ++)
        {
                n9 = n * 9;
                rev = reverse_number(n);
                if(n9 == rev)
                {
                        printf("%d\n",n);
                }
        }

        return 0;
}

/**
 * Description:整数反转函数
 */
int reverse_number(int a)
{
        int rev[5];
        int i, j, b, d;

        for(i = 0; a ; i ++)
        {
                rev[i] = a % 10;
                a /= 10;
        }

        for(j = i - 1, b = 0, d = 1; j >= 0; j --)                
        {
                b += rev[j] * d;
                d *= 10;
        }

        return b;
}

投机取巧的办法

#include <stdio.h>
int main(){
        printf("1089\n");
        return 0;
}

  1. 代码是给出了,但是解析的也太不清晰了吧!如 13 abejkcfghid jkebfghicda
    第一步拆分为 三部分 (bejk, cfghi, d) * C(13,3),为什么要这样拆分,原则是什么?

  2. #include <cstdio>
    #include <cstring>

    const int MAXSIZE=256;
    //char store[MAXSIZE];
    char str1[MAXSIZE];
    /*
    void init(char *store) {
    int i;
    store['A']=’V', store['B']=’W',store['C']=’X',store['D']=’Y',store['E']=’Z';
    for(i=’F';i<=’Z';++i) store =i-5;
    }
    */
    int main() {
    //freopen("input.txt","r",stdin);
    //init(store);
    char *p;
    while(fgets(str1,MAXSIZE,stdin) && strcmp(str1,"STARTn")==0) {
    if(p=fgets(str1,MAXSIZE,stdin)) {
    for(;*p;++p) {
    //*p=store[*p]
    if(*p<’A’ || *p>’Z') continue;
    if(*p>’E') *p=*p-5;
    else *p=*p+21;
    }
    printf("%s",str1);
    }
    fgets(str1,MAXSIZE,stdin);
    }
    return 0;
    }