Questo perche' ci sono degli errori. Nella riga
long len=10000000000000000000;
assegni alla variabile long un valore molto piu' ampio di quello massimo consentito e il compilatore 'tronca' in maniera errata generando (addirittura) un valore negativo ...
I cicli, ovviamente, non saranno eseguiti.
Deve essere
unsigned __int64 len=10000000000000000000;
Naturalmente lo stesso discorso vale per *tutte* le variabili contatore usate nei for e per il totalizzatore a.