D - Specialized Four-Digit Numbers

Description

Find and list all four-digit numbers in decimal notation that have the property that the sum of its four digits equals the sum of its digits when represented in hexadecimal (base 16) notation and also equals the sum of its digits when represented in duodecimal (base 12) notation.         For example, the number 2991 has the sum of (decimal) digits 2+9+9+1 = 21. Since 2991 = 1*1728 + 8*144 + 9*12 + 3, its duodecimal representation is 1893 12, and these digits also sum up to 21. But in hexadecimal 2991 is BAF 16, and 11+10+15 = 36, so 2991 should be rejected by your program.         The next number (2992), however, has digits that sum to 22 in all three representations (including BB0 16), so 2992 should be on the listed output. (We don‘t want decimal numbers with fewer than four digits -- excluding leading zeroes -- so that 2992 is the first correct answer.)

Input

There is no input for this problem

Output

Your output is to be 2992 and all larger four-digit numbers that satisfy the requirements (in strictly increasing order), each on a separate line with no leading or trailing blanks, ending with a new-line character. There are to be no blank lines in the output. The first few lines of the output are shown below.

Sample Input

There is no input for this problem

Sample Output

2992
2993
2994
2995
2996
2997
2998
2999
...

依旧是submit failed,以下为我写的代码
#include <iostream>
using namespace std;
int f(int n,int x)
{
    int i=0,j,a[10],m=0;
    while(n!=0)    {
        a[i++]=n%x;
        n=n/x;
    }
    for(j=0;j<i;j++)m+=a[j];
    return m;
}
int main()
{
    int n,i,p,q;
    for(i=2992;i<10000;i++){
        n=i/1000+i/100%10+i/10%10+i%10;
        p=f(i,16);
        q=f(i,12);
        if(p==n&&q==n)cout<<i<<endl;
    }
    system("pause");
    return 0;
}

以下是提交成功AC的代码

#include <iostream>
using namespace std;
int f(int n,int x)
{
    int a,m=0;
    while(n!=0)    {
        a=n%x;
        n=n/x;
        m+=a;
    }
    return m;
}
int main()
{
    int n,i;
    for(i=2992;i<10000;i++){
        n=i/1000+i/100%10+i/10%10+i%10;
        if(f(i,16)==n&&f(i,12)==n)cout<<i<<endl;
    }
    //system("pause");
    return 0;
}

发现我写的代码似乎太啰嗦了!!!麻烦!!许多东西完全可以省略!!!!

时间: 2024-10-25 12:02:30

D - Specialized Four-Digit Numbers的相关文章

grep Demo

最近在学习Linux的几个非常强大的命令awk, sed, grep. 之前对这些命令只是有非常皮毛的了解. 最近稍微深入的对这些命令进行一些学习.sed的主要功能如下: @1: 正则匹配某个字符串. @2: grep具备递归搜索文件/目录功能. #!/bin/bash #File: grepDemo.sh #Author: lxw #Time: 2014-08-21 #Usage: Demonstration for grep. main(){ #The following 2 lines a

[转]http://lua-users.org/wiki/LpegTutorial

Simple Matching LPeg is a powerful notation for matching text data, which is more capable than Lua string patterns and standard regular expressions. However, like any language you need to know the basic words and how to combine them. The best way to

A1024. Palindromic Number (25)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Non-palindromic numbers can be paired with palin

PAT1024. Palindromic Number

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number.  For example, 1234321 is a palindromic number.  All single digit numbers are palindromic numbers. Non-palindromic numbers can be paired with pal

uva 11610 Reverse Prime

Problem FReverse Prime Input: Standard Input Output: Standard Output There are a few 7 digit positive numbers whose reverse number is a prime number and less than 10^6.  For example: 1000070, 1000090 and 1000240 are first few reverse prime numbers be

FZU 2215 Simple Polynomial Problem (多项式乘法 栈)

Problem 2215 Simple Polynomial Problem Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description You are given an polynomial of x consisting of only addition marks, multiplication marks, brackets, single digit numbers, and of course the le

1019. General Palindromic Number (20)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Although palindromic numbers are most often cons

linux基础-认识系统2-基础命令 bc

linux的计算器 指令bc 1+2 3 2*5 10 10/100 0 设置小数点精度后 10/100 .10 详情 man bc后如下 bc(1)                                                                    bc(1) NAME       bc - An arbitrary precision calculator language SYNTAX       bc [ -hlwsqv ] [long-options]

A1019. General Palindromic Number (20)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Although palindromic numbers are most often cons

1019. General Palindromic Number

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Although palindromic numbers are most often cons