我需要帮助解决早期竞争中的问题N:
问题N:数字和
给定3个正整数A,B和C,找到小于或等于A的正整数,当用基数B表示时,有数字总和为C.
输入将由一系列行组成,每行包含三个整数,A,B和C,2≤B≤100,1≤A,C≤1,000,000,000.数字A,B和C在基数10中给出,并由一个或多个空格分隔.输入由包含三个零的行终止.
输出将是每个输入行的数字数(必须在基数10中给出).
样本输入
100 10 9
100 10 1
750000 2 2
1000000000 10 40
100000000 100 200
0 0 0
Run Code Online (Sandbox Code Playgroud)
样本输出
10
3
189
45433800
666303
Run Code Online (Sandbox Code Playgroud)
相关规则:
从键盘,即使用读所有的输入stdin,System.in,cin或同等学历.输入将从文件重定向,以形成提交的输入.
写入所有输出到屏幕上,即使用stdout,System.out,cout或同等学历.不写信给stderr.不要使用,甚至不包括任何允许直接操作屏幕的模块,例如conio,Crt或类似的东西.程序的输出被重定向到一个文件以供以后检查.使用直接I/O意味着不会重定向此类输出,因此无法检查.这可能意味着正确的程序被拒绝!
除非另有说明,否则输入中的所有整数都将适合标准的32位计算机字.一条线上的相邻整数将由一个或多个空格分隔.
当然,公平地说,在尝试解决这个问题之前我应该学习更多,但如果有人在这里告诉我它是如何完成的,我真的很感激.
先谢谢你,约翰.
#include <iostream>
#include <map>
#include <vector>
template<typename T>
class foo {
public:
foo(T val) : m_Value(val) { };
T get_value() const { return m_Value; };
void set_value(const T& t) { m_Value=t; };
bool operator<(const foo<T>& x) { return x.get_value() < m_Value; };
bool operator==(const foo<T>& x) { return x.get_value() == m_Value; };
private:
T m_Value;
};
template<typename T>
class bar {
public:
bar() { };
void print_first() const {
typename std::map<foo<T>,std::vector<foo<T> > >::iterator it;
it = m_Map.begin(); //ERROR!
std::cout << …Run Code Online (Sandbox Code Playgroud)