using System;using System.Linq;publicclassBinaryGCD{publicstaticintGcdBinary(int x,int y){return Convert.ToString(GCD(Math.Abs(x), Math.Abs(y)),2).Count(e => e =='1');}privatestaticintGCD(int a,int b){return b ==0? a :GCD(b, a % b);}}
答案2:
using System;publicclassBinaryGCD{publicstaticintGcdBinary(int x,int y){int a = Math.Abs(x);int b = Math.Abs(y);if(y==0){string num = Convert.ToString(a,2).Replace("0","");return num.Length;}returnGcdBinary(b, a % b);}}
答案3:
using System;using System.Linq;using System.Numerics;publicclassBinaryGCD{publicstaticintGcdBinary(int x,int y){return Convert.ToString((int)BigInteger.GreatestCommonDivisor(x,y),2).Count(e=>e=='1');}}
答案4:
publicclassBinaryGCD{staticintgcd(int a,int b){if(b ==0)return a;returngcd(b, a % b);}publicstaticintGcdBinary(int x,int y){int g =gcd(x, y);int cont =0;while(g !=0){if(g %2==1|| g%2==-1) cont++;
g /=2;}return cont;}}
答案5:
using System;publicclassBinaryGCD{publicstaticintGcd(int a,int b){return(b ==0)? Math.Abs(a):Gcd(b, a % b);}publicstaticintGcdBinary(int x,int y){string gcdbin = Convert.ToString(Gcd(x, y),2);int res =0;foreach(char i in gcdbin){if(i =='1') res++;}return res;}}
答案6:
using System;using System.Linq;publicclassBinaryGCD{publicstaticintGcdBinary(int x,int y){int gcd =GCD(Math.Abs(x), Math.Abs(y));return Convert.ToString(gcd,2).Count(c => c =='1');}publicstaticint GCD (int a,int b){while(a !=0&& b !=0){if(a > b)
a %= b;else
b %= a;}return a ==0? b : a;}}
答案7:
using System;using System.Linq;publicclassBinaryGCD{publicstaticintGcdBinary(int x,int y){int gcd =GCD(Math.Abs(x), Math.Abs(y));return Convert.ToString(gcd,2).Count(c => c =='1');}privatestaticintGCD(int a,int b){return b ==0? a :GCD(b, a % b);}}
答案8:
using System;using System.Linq;publicclassBinaryGCD{publicstaticintGcdBinary(int x,int y){if(x ==0&& y ==0)return0;return Convert.ToString(Math.Max(Gcd(Math.Abs(x), Math.Abs(y)),1),2).Count(c => c =='1');}privatestaticintGcd(int a,int b)=> b ==0? a :Gcd(b, a % b);}
答案9:
using System;using System.Linq;using System.Security.Cryptography.X509Certificates;publicclassBinaryGCD{publicstaticintGcdBinary(int x,int y){if(x ==0&& y ==0){return0;}if(x <0){
x =-x;}if(y <0){
y =-y;}int gcd =Gcd(x, y);string str = Convert.ToString(gcd,2);return str.Count(c => c =='1');}privatestaticintGcd(int a,int b){if(b ==0)return a;returnGcd(b, a % b);}}
答案10:
using System;using System.Linq;publicclassBinaryGCD{publicstaticintGcdBinary(int x,int y){string obraz_b ="";int b = Math.Max(Math.Abs(x), Math.Abs(y));int a = Math.Min(Math.Abs(x), Math.Abs(y));if(a ==0){
obraz_b = Convert.ToString(b,2);return obraz_b.Where(z => z =='1').Count();}while(b % a !=0|| Math.Min(x, y)% a !=0) a--;
obraz_b = Convert.ToString(a,2);return obraz_b.Where(z => z =='1').Count();}}
最大公约数位计数【难度:1级】:答案1:using System;using System.Linq;public class BinaryGCD { public static int GcdBinary(int x, int y) { return Convert.ToString(GCD(Math.Abs(x), Math.Abs(y)), 2).Count(e...