problemscpp
A collection of my answers to algorithm problems in c++.
函数
pat::b::b1037 命名空间参考

1037 在霍格沃茨找零钱 更多...

函数

int main (istream &cin, ostream &cout)
 
 TEST (b1037, case1)
 
 TEST (b1037, case2)
 

详细描述

1037 在霍格沃茨找零钱

函数说明

◆ main()

int pat::b::b1037::main ( istream &  cin,
ostream &  cout 
)

在文件 pat.cpp1214 行定义.

1214 {
1215 unsigned long long galleon;
1216 unsigned long long sickle;
1217 unsigned long long knut;
1218 char ch;
1219 unsigned long long sum[2];
1220 for(int i = 0; i < 2; i++) {
1221 cin >> galleon >> ch >> sickle >> ch >> knut;
1222 sum[i] = galleon * 17 * 29 + sickle * 29 + knut;
1223 }
1224 const bool positive = sum[0] <= sum[1];
1225 unsigned long long diff;
1226 if(positive) {
1227 diff = sum[1] - sum[0];
1228 } else {
1229 diff = sum[0] - sum[1];
1230 }
1231 galleon = diff / (17 * 29);
1232 diff %= 17 * 29;
1233 sickle = diff / 29;
1234 diff %= 29;
1235 knut = diff;
1236 if(!positive) {
1237 cout << '-';
1238 }
1239 cout << galleon << '.' << sickle << '.' << knut;
1240 return 0;
1241 }

被这些函数引用 TEST().

◆ TEST() [1/2]

pat::b::b1037::TEST ( b1037  ,
case1   
)

在文件 pat_test.cpp567 行定义.

567 {
568 istringstream in("10.16.27 14.1.28");
569 auto out = ostringstream();
570 main(in, out);
571 const auto ans = out.str();
572 ASSERT_EQ("3.2.1", out.str());
573 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().

◆ TEST() [2/2]

pat::b::b1037::TEST ( b1037  ,
case2   
)

在文件 pat_test.cpp575 行定义.

575 {
576 istringstream in("14.1.28 10.16.27");
577 auto out = ostringstream();
578 main(in, out);
579 const auto ans = out.str();
580 ASSERT_EQ("-3.2.1", out.str());
581 }

引用了 main().