#include <iostream>
using namespace std;
typedef long long int64;
int64 COIN=100000000;
int wrap = 0;
int64 GetBlockValue(int nHeight, int64 nFees)
{
int64 nSubsidy = 1 * COIN;
// Subsidy is cut in half every 70000 blocks, which will occur approximately
nSubsidy >>= (nHeight / 70000); // Astrocoin: 70k blocks
return nSubsidy + nFees;
}
int main()
{
// your code goes here
int64 totalcoin=0;
for (int block = 1; block < 5000000; block++)
{
int64 reward = GetBlockValue(block, 0);
totalcoin += reward;
if (totalcoin >= (140000 * COIN) && wrap == 0){
cout << "block:" << block << " reward " << reward << " totalcoin: " << totalcoin << "\r\n";
wrap = 1;
}
if (totalcoin >= (210000 * COIN) && wrap == 1 ){
cout << "block:" << block << " reward " << reward << " totalcoin: " << totalcoin << "\r\n";
wrap = 2;
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NDsKCmludDY0IENPSU49MTAwMDAwMDAwOwppbnQgd3JhcCA9IDA7CgppbnQ2NCBHZXRCbG9ja1ZhbHVlKGludCBuSGVpZ2h0LCBpbnQ2NCBuRmVlcykKewogICAgaW50NjQgblN1YnNpZHkgPSAxICogQ09JTjsKCiAgICAvLyBTdWJzaWR5IGlzIGN1dCBpbiBoYWxmIGV2ZXJ5IDcwMDAwIGJsb2Nrcywgd2hpY2ggd2lsbCBvY2N1ciBhcHByb3hpbWF0ZWx5IAogICAgblN1YnNpZHkgPj49IChuSGVpZ2h0IC8gNzAwMDApOyAvLyBBc3Ryb2NvaW46IDcwayBibG9ja3MKICAgIHJldHVybiBuU3Vic2lkeSArIG5GZWVzOwp9CgppbnQgbWFpbigpIAp7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglpbnQ2NCB0b3RhbGNvaW49MDsgCgkKCWZvciAoaW50IGJsb2NrID0gMTsgYmxvY2sgPCA1MDAwMDAwOyBibG9jaysrKQoJewoJCWludDY0IHJld2FyZCA9IEdldEJsb2NrVmFsdWUoYmxvY2ssIDApOwoJCXRvdGFsY29pbiArPSByZXdhcmQ7CgoJCWlmICh0b3RhbGNvaW4gPj0gKDE0MDAwMCAqIENPSU4pICYmIHdyYXAgPT0gMCl7CgkJCWNvdXQgPDwgImJsb2NrOiIgPDwgYmxvY2sgPDwgICIgcmV3YXJkICIgPDwgcmV3YXJkIDw8ICIgdG90YWxjb2luOiAiIDw8IHRvdGFsY29pbiA8PCAiXHJcbiI7CgkJCXdyYXAgPSAxOwoJCX0KCQlpZiAodG90YWxjb2luID49ICgyMTAwMDAgKiBDT0lOKSAmJiB3cmFwID09IDEgKXsKCQkJY291dCA8PCAiYmxvY2s6IiA8PCBibG9jayA8PCAgIiByZXdhcmQgIiA8PCByZXdhcmQgPDwgIiB0b3RhbGNvaW46ICIgPDwgdG90YWxjb2luIDw8ICJcclxuIjsKCQkJd3JhcCA9IDI7CgkJfQoJCQoJfQoKfQoK