using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace myjinxin
{using System;publicclassKata{publicintNumberOfClans(int[] divisors,int k){
List<string> result =newList<string>();StringBuilder builder =newStringBuilder();for(int i =1; i <= k; i++){for(int j =0; j < divisors.Length; j++){if(i % divisors[j]==0)
builder.Append("Y");else
builder.Append("N");}
result.Add(builder.ToString());
builder.Clear();}return result.Distinct().Count();}}}
答案2:
namespace myjinxin {using System.Collections.Generic;using System.Linq;publicclassKata{publicintNumberOfClans(int[] divisors,int k ){var d =newDictionary<int,bool[]>( k +1);for(int i =1; i <= k; i++){
d[ i ]=newbool[divisors.Length];for(int j =0; j < divisors.Length; j++){if( i%divisors[ j ]==0){
d[ i ][ j ]=true;}}}return d.GroupBy( p =>string.Concat( p.Value )).Count();}}}
答案3:
using System;using System.Collections.Generic;using System.Linq;namespace myjinxin
{publicclassKata{publicintNumberOfClans(int[] divisors,int k){return Enumerable.Range(1, k).Select(num => divisors
.Select((div, index)=> num % div ==0?(int)Math.Pow(2, index):0).Sum()).GroupBy(sum => sum).Count();}}}
答案4:
namespace myjinxin
{using System;using System.Collections.Generic;using System.Linq;publicclassKata{publicintNumberOfClans(int[] divisors,int k){
List<string> count =newList<string>();for(int i =1; i <= k; i++){
count.Add(string.Join("",divisors.Select((x, index)=> i % x ==0? index.ToString():"")));}return count.Distinct().Count();}}}
答案5:
namespace myjinxin
{using System.Linq;using System.Collections.Generic;publicclassKata{publicintNumberOfClans(int[] divisors,int k){
List<int> NN =newList<int>();
List<int> NY =newList<int>();
List<int> YY =newList<int>();
divisors = divisors.Distinct().ToArray();int res =0;for(int i =1; i < k; i++){for(int j = i +1; j <= k; j++){if(divisors.All(x => i % x !=0&& j % x !=0)){if(NN.All(x => x != i && x != j)) res++;
NN.Add(i); NN.Add(j);}elseif(divisors.All(x => i % x ==0&& j % x ==0)){if(YY.All(x => x != i && x != j)) res++;
YY.Add(i); YY.Add(j);}elseif(divisors.Any(x => i % x !=0&& j % x ==0)||
divisors.Any(x => i % x ==0&& j % x !=0))continue;else{if(NY.All(x => x != i && x != j)) res++;
NY.Add(i); NY.Add(j);}}}
NN = NN.Distinct().ToList();
NY = NY.Distinct().ToList();
YY = YY.Distinct().ToList();
res +=(k - NN.Count - NY.Count - YY.Count);return res;}}}
答案6:
namespace myjinxin
{using System.Collections.Generic;using System.Linq;publicclassKata{publicintNumberOfClans(int[] divisors,int k){var divideResults =newList<string>();for(int i =1; i <= k; i++){
divideResults.Add(string.Join("", divisors.Select(e => i % e ==0?1:0)));}return divideResults.GroupBy(e => e).Count();}}}
namespace myjinxin
{using System;using System.Collections.Generic;publicclassKata{publicintNumberOfClans(int[] divisors,int k){varset=newHashSet<List<int>>(newIntListEquality());for(int i =1; i <= k; i++){var list =newList<int>();foreach(int t in divisors)if(i % t ==0) list.Add(t);set.Add(list);}returnset.Count;}}publicclassIntListEquality:IEqualityComparer<List<int>>{publicboolEquals(List<int> x, List<int> y){if(x.Count != y.Count)returnfalse;for(int i =0; i < x.Count; i++)if(x[i]!= y[i])returnfalse;returntrue;}publicintGetHashCode(List<int> obj)=>0;}}
简单有趣#21:向数氏族【难度:1级】:答案1:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace myjinxin{ using System; public class Kata { public ...