সবচেয়ে ছোট একাধিক রান 9 এর পরে 0 এর alচ্ছিক রান


22

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে, এর সবচেয়ে ছোট ধনাত্মক পূর্ণসংখ্যার একাধিকটি সন্ধান করুন যা 9 এর একটি রান এবং তার পরে 0 এর একটি alচ্ছিক রান হয় In অন্য কথায়, এর ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যা একাধিকটি খুঁজে নিন যা রেজেক্সের সাথে মিলে যায় /^9+0*$/

উদাহরণস্বরূপ, যদি প্রদত্ত ধনাত্মক পূর্ণসংখ্যা 2 হয় তবে 90 টি প্রত্যাবর্তন করুন, যেহেতু 90টি ইতিবাচক পূর্ণসংখ্য 2 এর 2 এবং এটি সবচেয়ে ছোট যা রেজেক্সের সাথে মিলে যায় /^9+0*$/

পরীক্ষার কেস:

n  f(n)
1  9
2  90
3  9
4  900
5  90
6  90
7  999999
8  9000
9  9
10 90
11 99
12 900
13 999999
14 9999990
15 90
16 90000

এটি । বাইট জিতে সংক্ষিপ্ত উত্তর। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।


3
সুসংজ্ঞায়িততার প্রমাণ?
ধ্বংসাত্মক লেবু

2
@ আবিষ্কারযোগ্য লেমন এই প্রমাণটি যথেষ্ট, যেহেতু ফলাফলটি 9 দ্বারা গুণ করা যেতে পারে
xnor

1
আমি মনে করি যে আরও পরীক্ষার কেসগুলি 9 এর আগে 9 এর আগে আসা সমাধানের প্রয়োজন তা পরীক্ষা করে নেওয়া ভাল।
xnor

2
@ লিকিউন হয়ত নাও হতে পারে, তবে 9900099 হয়, এবং নিয়ম অনুসারে অনুমতি দেওয়া উচিত নয়।
DrQuarius

2
@ কোয়েটা_পিসউ_সু বিধিটি হ'ল প্রোগ্রামটি "তাত্ত্বিকভাবে" যেকোন পূর্ণসংখ্যার জন্য নির্বিচারে যথাযথতা এবং স্মৃতি ও সময় দেওয়া উচিত for
ফাঁস নুন

উত্তর:


6

জেলি , 13 11 বাইট

ṚḌ‘DS=ḍ@ð1#

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

ṚḌ‘DS=ḍ@ð1#  Main link. Argument: n

        ð    Start a dyadic chain with arguments n and n.
         1#  Execute the chain to the left with left argument k = n, n+1, n+2, ...
             and right argument n until 1 match has been found. Return the match.
Ṛ                Get the decimal digits of k, reversed.
 Ḍ               Convert from base 10 to integer.
                 This essentially removes trailing zeroes. As a side effect, it
                 reverses the digits, which doesn't matter to us.
  ‘              Increment the resulting integer. If and only if it consisted
                 entirely of 9's, the result is a power of 10.
   DS            Compute the sum of the digits. The sum is 1 if and only if the
                 integer is a power of 10. Note that the sum cannot be 0.
      ḍ@         Test k for divisibility by n.
     =           Compare the results.

4
ಠ_ಠ আপনি কীভাবে 9বা 0আপনার
পাভেল

আমি একটি ব্যাখ্যা যুক্ত করেছি।
ডেনিস



5

জাভাস্ক্রিপ্ট (ES6), 47 43 42 বাইট

-4 বাইটস @ আরনাউল্ড -২
বাইটকে ধন্যবাদ @ লুককে ধন্যবাদ

n=>eval('for(i=0;!/^9+0*$/.test(i);)i+=n')

টেস্ট

let f=
n=>eval('for(i=0;!/^9+0*$/.test(i);)i+=n')

for(let i=1;i<=16;i++)console.log(`f(${i}) = `+f(i))

পুনরাবৃত্তির সমাধান (7, 13 এবং 14 এর জন্য ব্যর্থ হয়), 38 বাইট

n=>g=(i=0)=>/^9+0*$/.test(i+=n)?i:g(i)

বলা হয় f(5)()। জন্য Chrome এবং Firefox সর্বোচ্চ কল স্ট্যাক আকার ছুঁয়েছে n=7, n=13এবং n=14


3
একটি বাইট সংক্ষিপ্ত:n=>eval('for(i=0;!/^9+0*$/.test(i);)i+=n')
লুক

4

রুবি , 36 বাইট

->x{r=0;1until"#{r+=x}"=~/^9+0*$/;r}

ব্রুট-জোর করা - এক্স = 17 এর জন্য চিরকাল লাগে।

এটি অনলাইন চেষ্টা করুন!


আমি তোমাদের যেমন প্রায় একই সমাধান সঙ্গে এসেছিলেন আপ, কিন্তু একটি পুরো প্রোগ্রাম হিসাবে: codegolf.stackexchange.com/a/130106/60042 । আমি আপনার কাছ থেকে স্ট্রিং ইন্টারপোলেশন ব্যবহার ধার নিয়েছি, আমি আশা করি এটি ঠিক আছে।
পাভেল

4

জাভা 8, 61 57 বাইট

n->{int r=0;for(;!(""+r).matches("9+0*");r+=n);return r;}

-4 বাইট (এবং দ্রুত কার্যকরকরণ) @ জলি জোকারকে ধন্যবাদ ।

ব্যাখ্যা:

এখানে চেষ্টা করুন।

n->{                              // Method with integer as parameter and return-type
  int r=0;                        //  Result-integer
  for(;!(""+r).matches("9+0*");   //  Loop as long as `r` doesn't match the regex
    r+=n                          //   And increase `r` by the input every iteration
  );                              //  End of loop
  return r;                       //  Return the result-integer
}                                 // End of method

হ্যাঁ অপ্টিমাইজেশনের জন্য! ^^
অলিভিয়ার গ্রাগোয়ার

1
এন দ্বারা বৃদ্ধি করা r%nচেকটি এড়ানো হয়n->{int r=0;for(;!(""+(r+=n)).matches("9+0*"););return r;}
জলি জোকার

for(;!(""+r).matches("9+0*");r+=n)
জলি জোকার

আমি চেষ্টা করেছি, এবং পূর্ণসংখ্যা এবং গণিতের সাথে চেষ্টা করার চেষ্টা করেছি, তবে আমি এটি পরাতে পারি না! অভিনন্দন :)
অলিভিয়ার গ্রাগোয়ার




2

RProgN 2 , 18 বাইট

x={x*'^9+0*$'E}éx*

ব্যাখ্যা

x={x*'^9+0*$'E}éx*
x=                  # Set the value of "x" to the input.
  {           }é    # Find the first positive integer in which passing it to the defined function returns truthy.
   x*               # Multiply the index by x, this essentially searches multiples now.
     '^9+0*$'       # A Regex defined by a literal string.
             E      # Does the multiple match the regex?
                x*  # Multiple the outputted index by x, giving the result.

এটি অনলাইন চেষ্টা করুন!


2

গণিত , 71 বাইট

(x=#;While[!StringMatchQ[ToString@x,RegularExpression@"9+0*"],x+=#];x)&

এটি অনলাইন চেষ্টা করুন!

খুব বিরক্তিকর দৃ force় সমাধান সমাধান নয়, তবে এটি অন্যান্য ম্যাথামেটিকার উত্তরকে মারধর করে, যা কিছু চালাক কৌশল ব্যবহার করে।

এই চ্যালেঞ্জের সাথে গণিতের যে একটিকে ছাড়িয়ে দেওয়ার মান রয়েছে তা হ'ল এটি StringMatchQএকটি সম্পূর্ণ ম্যাচের প্রয়োজন, তাই আমি 9+0*বরং এটি করতে পারি ^9+0*$


2
আপনি Mathics পরিবর্তে ম্যাথামেটিকাল ব্যবহার করতে ইচ্ছুক হন, তাহলে আপনার সাথে একটি কয়েক বাইট সংরক্ষণ করতে পারবেন "9"..~~"0"...পরিবর্তে RegularExpression@"9+0*"
একটি গাছ নয়

1
@ নোটাত্রী ধন্যবাদ, আমি এটি পরবর্তী সময়ের জন্য মনে রাখব, তবে আমি ম্যাথিক্সের সাথে লেগে থাকব। আমি বুঝতে পারি না এমন সিনট্যাক্স ব্যবহার না করা পছন্দ করি এবং আমি প্রথমবারের মতো সিনট্যাক্স দেখেছি।
পাভেল

যথেষ্ট ফর্সা। (ম্যাথামেটিকার প্যাটার্ন মেলানো সিনট্যাক্স একটি শক্তিশালী হাতিয়ার, তবে আপনি যদি নিয়মিত ভাবের সাথে পরিচিত হন তবে আপনি সম্ভবত এটি ইতিমধ্যে জানেন!)
কোনও গাছ নয়

2

ব্যাচ, 175 বাইট

@set/pn=
@set s=
:g
@set/ag=-~!(n%%2)*(!(n%%5)*4+1)
@if not %g%==1 set s=0%s%&set/an/=g&goto g
@set r=1
:r
@set s=9%s%
@set/ar=r*10%%n
@if %r% gtr 1 goto r
@echo %s%

STDIN এ ইনপুট নেয়। কোনও ব্রুট ফোর্স সলিউশন নয় তবে প্রকৃতপক্ষে আমার দশমিক দশমিকের ঠিক উত্তরের উপর ভিত্তি করে এটি 17, 19 ইত্যাদির জন্য কাজ করবে যা অন্যথায় এর পূর্ণসংখ্যার সীমা ছাড়িয়ে যাবে।


2

গণিত, 127 বাইট

Select[FromDigits/@Select[Tuples[{0,9},c=#],Count[#,9]==1||Union@Differences@Flatten@Position[#,9]=={1}&],IntegerQ[#/c]&][[1]]&


ইনপুট

[17]

আউটপুট

9999999999999999

এখানে প্রথম 20 টি পদ রয়েছে

{9, 90, 9, 900, 90, 90, 999999, 9000, 9, 90, 99, 900, 999999, 9999990, 90, 90000, 9999999999999999, 90, 999999999999999999, 900}


1
চতুর, তবে এর সুস্পষ্ট সমাধানটি সবচেয়ে কম বলে মনে হচ্ছে: কোডগল্ফ.স্ট্যাকেক্সেঞ্জিং.com
পাভেল

আপনার সুস্পষ্ট সমাধান 17 ;-) করতে পারবেন না
J42161217

আমি কী বলতে পারি, দ্রুততম কোড নয়
পাভেল

যাইহোক, আপনার সমাধান ম্যাথিক্সে কাজ করে, আপনি এটিতে এটি পরিবর্তন করতে পারেন এবং একটি টিআইও লিঙ্ক যুক্ত করতে পারেন।
পাভেল


2

হাস্কেল , 53 বাইট

f পূর্ণসংখ্যা গ্রহণ করে এবং প্রদান করে।

f n=filter(all(<'1').snd.span(>'8').show)[n,n+n..]!!0

এটি অনলাইন চেষ্টা করুন!

এই সময় 17 এর বাইরে, যা সুবিধাজনকভাবে পরীক্ষার কেসগুলির বাইরে beyond 56 বাইটে একটি দ্রুত সংস্করণ:

f n=[x|a<-[1..],b<-[0..a-1],x<-[10^a-10^b],mod x n<1]!!0

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

  • fসমস্ত গুণক উত্পন্ন করে n, প্রতিটিকে একটি স্ট্রিতে রূপান্তর করে, সঠিক ফর্ম্যাটযুক্ত ফিল্টার আউট করে, তারপরে প্রথমটি নেয়।

  • দ্রুত সংস্করণ পরিবর্তে ব্যবহার করে প্রয়োজনীয় সংখ্যার ফর্ম হয় 10^a-10^b, a>=1, a>b>=0। গল্ফিংয়ের উদ্দেশ্যে এটি এই সত্যটি ব্যবহার করে যে ন্যূনতমের জন্য a, কেবল একজনই b কাজ করতে পারে, যা এটি bসামান্য ছোট "ভুল" ক্রমে এসগুলি তৈরি করতে দেয় ।


1

রুবি , 38 + 1 = 39 বাইট

-pপতাকা ব্যবহার করে ।

$_=y=eval$_
1until"#{$_+=y}"=~/^9+0*$/

-p এর সাথে প্রোগ্রামটি ঘিরে:

while gets
    ...
end
puts $_

gets stores its result in $_. eval is used to convert it to a number, as it's shorter than .to_i, then brute force is used, incrementing $_ until it matches the regex. "#{}" is sttring interpolation, it's shorter than a .to_s call as that would require parantheses around $_+=y. Finally, $_ is printed.

Try it online!

Try all test cases!



1

C++, 106 bytes

int main(){long N,T=9,j=10,M;cin>>N;while(T%N){if(T/j){T+=(M/j);j*=10;}else{T=(T+1)*9;j=10;M=T;}}cout<<T;}

Detailed Form:

int main()
{
    long N,T=9,j=10,M;
    cin >> N;

    while (T%N)
    {
        if (T/j)
        {
            T += (M/j);
            j *= 10;
        }
        else
        {
            T = (T+1)*9;
            j = 10;
            M = T;
        }
    } 

    cout << T;
}

TRY it online!


আরও ভাল গল্ফড:, [](int n){int T=9,j=10,m;while(t%n)if(t/j){t+=m/j;j*=10;}else{t=(t+1)*9;j=10;m=t;}return t;}}94 বাইট লাগে। মূলত, বাইটগুলি সংরক্ষণ করা, অপ্রয়োজনীয় বন্ধনীগুলিতে সংরক্ষণ করা, টাইপ নামকরণ এবং প্রকারের সংরক্ষণের জন্য ল্যাম্বডা ফাংশনটি ব্যবহার করে এটি একটি ফাংশন টাস্ক হিসাবে বিবেচনা করুন।
enedil

ল্যাম্বদা ব্যবহার করে এটি সংকলন করতে পারবেন না। আপনি একটি হাত দিতে পারেন?
koita_pisw_sou

এটি কারণ হতে পারে যে আমি শেষের দিকে খুব বেশি বন্ধনী রেখেছি।
enedil

তদতিরিক্ত, লাম্বডা সম্ভবত বিশ্বব্যাপী সুযোগের অস্তিত্বের প্রয়োজন নেই, যদিও এটি নিয়মিত কার্যক্রমে মোড়ানো 97 বাইট লাগে।
enedil

1

পাইথন 2 , 79 বাইট

x=input();n=10;y=9
while y%x:
 b=n
 while(b-1)*(y%x):b/=10;y=n-b
 n*=10
print y

এটি অনলাইন চেষ্টা করুন!

কিছু ব্যাখ্যা এটা ফর্ম ক্ষুদ্রতম প্রাকৃতিক খুঁজে বের করে 10**n-10**bদিয়ে n>b>=0যে ভাগ ইনপুট।

কিছু আইও

f(1) = 9
f(2) = 90
f(3) = 9
f(4) = 900
f(5) = 90
f(6) = 90
f(7) = 999999
f(8) = 9000
f(9) = 9
f(10) = 90
f(11) = 99
f(12) = 900
f(13) = 999999
f(14) = 9999990
f(15) = 90
f(16) = 90000
f(17) = 9999999999999999
f(18) = 90
f(19) = 999999999999999999


1

সুইফট 3.0, বাইট: 121

var i=2,m=1,n=""
while(i>0){n=String(i*m)
if let r=n.range(of:"^9+0*$",options:.regularExpression){print(n)
break};m=m+1}

এটি অনলাইন চেষ্টা করুন!


কি করে let r=? আমি rঅন্য কোথাও উল্লেখ করা দেখতে পাচ্ছি না
সাইয়েস

@ কিয়েস আর এন = এনআরঞ্জের মান শূন্য করে কিনা তা যাচাই করে নিন You
উ। পূজা

1

পাইথন 3 , 62 বাইট

এই ফাংশনটি একটি পূর্ণসংখ্যার লাগে nএবং mশূন্যে আর্কিটাইজ করে। তারপরে এটি সমস্ত জিরোগুলি প্রান্ত থেকে সরিয়ে দেয় mএবং ফলাফলটি কেবল 9 টি রয়েছে mকিনা তা পরীক্ষা করে থাকে , যদি তা না করে ফিরে আসে। যদি তা না হয় তবে এটি আবার যুক্ত nকরে mএবং আবার চেক করে etc.

def f(n,m=0):
 while{*str(m).strip('0')}!={'9'}:m+=n
 return m

এটি অনলাইন চেষ্টা করুন!


1

জাভা (ওপেনজেডকে 8) , 66 বাইট, 17 এ শ্বাসরোধ করবে না

n->{long a=10,b=1;for(;(a-b)%n>0;b=(b<10?a*=10:b)/10);return a-b;}

এটি অনলাইন চেষ্টা করুন!

@ কেভিনক্রুজসেনের সমাধানের চেয়ে দীর্ঘ তবে কিছুটা বড় সংখ্যা হ্যান্ডেল করতে পারে। এটি প্রার্থী সংখ্যাগুলি 10 ^ 6 - 10 ^ 3 = 999000 এর মতো গণনা করে 64৪-বিট লম্বা এখনও n = 23 এর জন্য ব্রেকিং সীমা।

সম্ভবত কিছুটা গল্ফ করা যেতে পারে তবে ইতিমধ্যে এটি কার্যকর করতে খুব বেশি সময় নিয়েছে ...


1

> <> , 35 বাইট

&a:v ;n-<
:,a/?(1:^!?%&:&-}:{
a*:\~

এটি অনলাইনে চেষ্টা করে দেখুন , বা এটি মাছের খেলার মাঠে দেখুন !

ধরে নিই ইনপুটটি ইতিমধ্যে স্ট্যাকের মধ্যে রয়েছে। ফর্ম 10 নম্বর খুঁজছেন করে কাজ করে একটি  - 10 , একটি <b সঙ্গে (হ্যাঁ, সাইন চেয়ে এর চেয়ে ছোট - এটা তার চেয়ে কম বাইট লাগে!) পর্যন্ত যে ইনপুট দ্বারা বিভাজ্য, তারপর মুদ্রণ 10  - 10 একটি । এটি ব্রুট ফোর্স পদ্ধতির তুলনায় অনেক দ্রুত (যা যাইহোক> <> এ কঠিন হবে)।


1

ভি , 19 14 বাইট

é0òÀ/[1-8]ü09

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

é0              ' <m-i>nsert a 0
  ò             ' <m-r>ecursively
   À            ' <m-@>rgument times
               ' <C-A> increment the number (eventually gives all multiples)
     /[1-8]ü09  ' find ([1-8]|09) if this errors, the number is of the form
                ' (9+0*) (because there won't ever be just zeros)
                ' implicitly end the recursion which breaks on the above error

1

জাভাস্ক্রিপ্ট (ES6), 51 49 বাইট

let
f=(n,x=1,y=1)=>(x-y)%n?f(n,x,y*10):x-y||f(n,x*10)
<input type=number value=1 step=1 min=1 oninput=O.value=f(value)>
<input type=number value=9 id=O disabled>

সংক্ষিপ্ততম পদ্ধতির নয়, তবে এটি দ্রুতই দুষ্ট।


1

গণিত, 82 বাইট

@ জেনি_ম্যাথির উত্তর থেকে জমা দেওয়ার ধরণটি ব্যবহার করে ...

(d=x=1;y=0;f:=(10^x-1)10^y;n:=If[y>0,y--;x++,y=d;d++;x=1];While[Mod[f,#]!=0,n];f)&

ইনপুট:

[17]

আউটপুট:

9999999999999999

আর এ @ সঙ্গে Jenny_mathy এর উত্তর মন্তব্যে যুক্তি আপেক্ষিক @Phoenix ... RepeatedTiming[]ইনপুট আবেদন [17]দেয়

{0.000518, 9999999999999999}

আধা মিলিসেকেন্ড। কিছুটা বড় ইনপুট এ যাচ্ছি [2003]:

{3.78, 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}

4 সেকেন্ডের নীচে কিছুটা।

পরীক্ষার সারণী: প্রথম 30 ধনাত্মক পূর্ণসংখ্যায়, ফলাফলগুলি হয়

{9, 90, 9, 900, 90, 90, 999999, 9000, 9, 90, 99, 900, 999999, 
9999990, 90, 90000, 9999999999999999, 90, 999999999999999999, 900, 
999999, 990, 9999999999999999999999, 9000, 900, 9999990, 999, 
99999900, 9999999999999999999999999999, 90}

ব্যাখ্যা: এখানে একমাত্র যাদু হ'ল কাস্টম পুনরাবৃত্তকারী (সিএস অর্থে "পুনরাবৃত্তকারী", এম'মেন্সে নয়)

n := If[ y>0  ,  y-- ; x++  ,  y=d ; d++ ; x=1]

যা গ্লোবাল ভেরিয়েবল x, নেতৃস্থানীয় "9" গুলি, y"0" গুলি অনুসরণের সংখ্যা এবং dমোট অঙ্কের সংখ্যাতে কাজ করে। আমরা অঙ্কের সংখ্যার মধ্য দিয়ে পুনরাবৃত্তি করতে চাই এবং প্রতিটি সংখ্যার প্রতিটি পছন্দের জন্য সর্বাধিক "0" গুলি এবং কমপক্ষে "9" গুলি দিয়ে শুরু করি। সুতরাং কোডটি প্রথম জিনিসটি d1 থেকে শুরু করে 1 থেকে জোর xকরে এবং এর পছন্দসই মান হয় ))y 0 তে The কাস্টম পুনরাবৃত্তকারী চেক করে যে "0" এর স্ট্রিংটি ছোট করা যেতে পারে। যদি তা হয় তবে এটি "0" s এর স্ট্রিং এক এক করে সংক্ষিপ্ত করে এবং "1" s এর স্ট্রিং একে একে বৃদ্ধি করে। যদি তা না হয় তবে এটি সংখ্যার সংখ্যা বৃদ্ধি করে, "0" এর সংখ্যাকে অঙ্কের সংখ্যার চেয়ে কম স্থিত করে এবং "9" এর সংখ্যা 1 তে সেট করে।dy


এবং তবুও, নিষ্ঠুর বল এবং রেজেসের চেয়ে এখনও বেশি।
পাভেল

@ ফিনিক্স: তাহলে ২০০৩ এ আপনার সময় কী?
এরিক টাওয়ার

1

টিআই-বেসিক (টিআই -৪৮ প্লাস সিই), 48 বাইট

Prompt X
For(K,1,0
For(M,-K+1,0
10^(K)-10^(-M
If 0=remainder(Ans,X
Return
End
End

Promptপ্রোগ্রাম চলাকালীন ইনপুট হয় ; আউটপুট সংরক্ষণ করা হয় Ans

ব্যাখ্যা:

ফর্মের সংখ্যা (10 এন ) (10 মি -1) = 10 কে -10 মিটার চেষ্টা করে , যেখানে এম + এন = কে 1 থেকে শুরু হয় এবং বৃদ্ধি পায় এবং কে এর প্রতিটি মানের জন্য এটি এম = 1, এন = কে চেষ্টা করে -1; মি = 2, এন = K-2; ... মি = কে, এন = 0; এটি একাধিক খুঁজে পাওয়া পর্যন্ত X

এটি 16 পর্যন্ত কাজ করে; 17 একটি ডোমেন ত্রুটি দেয় কারণ remainder(কেবলমাত্র 9999999999999 (13 টি নাইন) পর্যন্ত লভ্যাংশ গ্রহণ করতে পারে এবং 17 টি 999999999999999999 (16 নাইন) আউটপুট করা উচিত।

Prompt X               # 3 bytes, input number
For(K,1,0              # 7 bytes, k in the description above; until a match is found
For(M,-K+1,0           # 10 bytes, start with n=1, m=(k-n)=k-1;
                           # then n=2, m=(k-n)=k-2, up to n=k, m=(k-n)=0
                           # (M=-m because it saved one byte)
10^(K)-10^(-M           # 8 bytes, n=(k-m) nines followed by m zeroes → Ans
If not(remainder(Ans,X # 8 bytes, If X is a factor of Ans (remainder = 0)
Return                 # 2 bytes, End program, with Ans still there
End                    # 2 bytes,
End                    # 1 byte (no newline)

1

কিউবিআইসি , 53 বাইট

{p=p+1┘o=p*9_F!o$|┘n=!A!~(_l!n$|=_l!n+1$|)-(o%:)|\_Xo

ব্যাখ্যা

{        infinitely DO
p=p+1    raise p (starts out as 0)
┘o=p*9   Get the mext multiple of 9 off of p
_F!o$|   Flip a string representation of p*9
┘n=!A!   and set 'n' to be an int version of the flipped p*9 
         (this effectively drops trailing 0's)
~        This IF will subtract two values: the first is either 0 for n=x^10, or -1
         and the second bit does (p*9) modulo 'a' (input number): also 0 for the numbers we want
(
 _l!n$|  the length of n's string representation
=        is equal to
_l!n+1$| the length of (n+1)'s string rep (81 + 1 = 82, both are 2 long; 99 + 1 = 100, there's a difference)
)        The above yields -1 (Qbasic's TRUE value) for non-9 runs, 0 for n=x^10
-        Subtract from that 
(o%:)    (p*9) modulo a     0 for p*9 = a*y
|       THEN (do nothing, since we want 0+0=0 in the conditionals above, execution of the right path jumps to ELSE
\_Xo    ELSE quit, printing (p*9)

1

সি (জিসিসি) , 126 বাইট

#include<stdio.h>
main(x,n,y,b){n=10;y=9;scanf("%d",&x);while(y%x){b=n;while((b-1)*(y%x)){b/=10;y=n-b;}n*=10;}printf("%d",y);}

এটি অনলাইন চেষ্টা করুন!

কিছু ব্যাখ্যা এটা ফর্ম ক্ষুদ্রতম প্রাকৃতিক খুঁজে বের করে 10**n-10**bদিয়ে n>b>=0যে ভাগ ইনপুট।

কিছু আইও

f(1) = 9
f(2) = 90
f(3) = 9
f(4) = 900
f(5) = 90
f(6) = 90
f(7) = 999999
f(8) = 9000
f(9) = 9
f(10) = 90
f(11) = 99
f(12) = 900
f(13) = 999999
f(14) = 9999990
f(15) = 90
f(16) = 90000

1

পার্ল 5 , 23 + 2 (-পা) = 25 বাইট

ব্রুট ফোর্স পদ্ধতি

$_+=$F[0]while!/^9+0*$/

এটি অনলাইন চেষ্টা করুন!

এটি ধীর, তবে এটি ক্ষুদ্র।

আরও কার্যকর পদ্ধতি:

41 + 2 (-পা) = 43 বাইট

$_=9;s/0/9/||($_=9 .y/9/0/r)while$_%$F[0]

এটি অনলাইন চেষ্টা করুন!

এটি কোনও ইনপুটটির জন্য ভাল কাজ করে তবে এটি দীর্ঘতর কোড।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.