バグ
anarchy golf - Decompose integer into sum of squares の sample output が間違っている件ですが、こんなプログラムで sample output を再現できました。
#include<stdio.h> int numbers[301], indice[301], length[301], sum[301]; void show(int index){ if(index>0){ show(indice[index]); printf(" %d", numbers[index]); } } int main() { int n; for(n=1; n<=300; n++){ int number, min_length=9, min_sum=300; for(number=1; number*number<=n; number++){ int remain=n-number*number; if((min_length>length[remain]) || (min_length==length[remain] && min_sum>sum[remain])){ numbers[n]=number; min_length=length[remain]; length[n]=min_length+1; indice[n]=remain; sum[remain]=min_sum+number; } } printf("%d:", n); show(n); puts(""); } return 0; }