f=lambda r,x=0:r-x and-~((r*r-x*x)**.5%1>0)*4+f(r,x+1)
এটি অনলাইন চেষ্টা করুন!
কম গল্ফড (55 বাইট) ( টিআইও )
lambda r:8*r-4*sum((r*r-x*x)**.5%1==0for x in range(r))
এটি আউটপুট হিসাবে অনুমান করে 8*r
, তারপরে ভার্টেক্স ক্রসিংয়ের জন্য সংশোধন করে। ফলাফলটি 8*r-g(r*r)
যেখানে দুটি স্কোয়ারের যোগফল (বাদে ) লেখার বিভিন্ন উপায়ের সংখ্যাg(x)
গণনা করে ।x
g(0)=0
চেনাশোনাটি যদি কখনও কোনও শীর্ষে না যায় তবে স্পর্শ করা কক্ষের সংখ্যাটি অতিক্রম করা প্রান্তের সমান হবে। চেনাশোনাটি 2*r
উল্লম্ব গ্রিডলাইন এবং 2*r
অনুভূমিক গ্রিডলাইনগুলির মধ্য দিয়ে যায় এবং মোট দুটির জন্য উভয় দিকেই প্রতিটি পাশ করে 8*r
।
তবে, কেবল একটি নতুন ঘরে প্রবেশ করার সময় একটি শীর্ষে প্রতিটি ক্রসিংকে দুটি প্রান্তের ক্রসিং হিসাবে গণনা করা হয়। সুতরাং, আমরা ভারটিেক্স ক্রসিংয়ের সংখ্যা বিয়োগ করে ক্ষতিপূরণ করি। এই অক্ষ উপর পয়েন্ট পছন্দ অন্তর্ভুক্ত (r,0)
সেইসাথে পিথাগোরাস মত triples (4,3)
জন্য r=5
।
আমরা একক কোয়াড্রেন্ট পয়েন্টগুলি (x,y)
সাথে x>=0
এবং তার y>0
সাথে x*x+y*y==n
গণনা করি, তারপরে 4 দিয়ে গুণ করব We আমরা বিরতিতে sqrt(r*r-x*x)
পুরো সংখ্যাটির সংখ্যাটি গণনা করে এটি করি ।x
[0,r)