#include <iostream>
/*
Use integer division and modulo:
1 minute = 60 seconds
1 hour = 60 minutes
1 day = 24 hours
1 week = 7 days
*/
/*
Convert a total number of seconds into weeks, days, hours,
minutes, and seconds. The function receives the total seconds
and outputs each component by reference.
*/
void convertSeconds(long long totalSeconds,
long long &weeks,
long long &days,
long long &hours,
long long &minutes,
long long &seconds)
{
const long long SECS_PER_MIN = 60;
const long long SECS_PER_HOUR = 60 * SECS_PER_MIN;
const long long SECS_PER_DAY = 24 * SECS_PER_HOUR;
const long long SECS_PER_WEEK = 7 * SECS_PER_DAY;
// Compute each unit using integer division and modulo
weeks = totalSeconds / SECS_PER_WEEK;
totalSeconds %= SECS_PER_WEEK;
days = totalSeconds / SECS_PER_DAY;
totalSeconds %= SECS_PER_DAY;
hours = totalSeconds / SECS_PER_HOUR;
totalSeconds %= SECS_PER_HOUR;
minutes = totalSeconds / SECS_PER_MIN;
seconds = totalSeconds % SECS_PER_MIN;
}
int main() {
long long seconds = 1000000;
long long w, d, h, m, s;
convertSeconds(seconds, w, d, h, m, s);
std::cout << w << " weeks, "
<< d << " days, "
<< h << " hours, "
<< m << " minutes, "
<< s << " seconds\n";
}
/*
run:
1 weeks, 4 days, 13 hours, 46 minutes, 40 seconds
*/