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.