「剰余による分類」の編集履歴(バックアップ)一覧はこちら
剰余による分類 - (2012/11/30 (金) 15:39:04) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
問い1
10個の自然数が小さい順に並んでいる。
大きい数字-小さい数字が6の倍数になる数はいくつか?
#include<stdio.h>
int main(){
int nums[]={1,3,6,14,29,60,121,249,501,1003};
int count[6]={0};
int ans=0;
for(int i=0;i<10;i++){
int m=nums[i]%6;
ans+=count[m];
count[m]++;
}
printf("解法1による解=%d\n",ans);
ans=0;
for(int i=1;i<10;i++){
for(int j=0;j<i;j++){
ans+=((nums[i]+nums[j])%6==0);
}
}
printf("解法2による解=%d\n",ans);
}
問い1
10個の自然数が小さい順に並んでいる。
大きい数字-小さい数字が6の倍数になる数はいくつか?
計算量nの解法と、計算量n^2/2の解法。
#include<stdio.h>
int main(){
int nums[]={1,3,6,14,29,60,121,249,501,1003};
int count[6]={0};
int ans=0;
for(int i=0;i<10;i++){
int m=nums[i]%6;
ans+=count[m];
count[m]++;
}
printf("解法1による解=%d\n",ans);
ans=0;
for(int i=1;i<10;i++){
for(int j=0;j<i;j++){
ans+=((nums[i]+nums[j])%6==0);
}
}
printf("解法2による解=%d\n",ans);
}
*問い8-2