අන්තරාන්තර පරාස ලීට්කෝඩ් විසඳුමක ඔඩ් අංක ගණන් කරන්න


දුෂ්කරතා මට්ටම පහසු
නිතර අසනු ලැබේ මයික්රොසොෆ්ට්
ගණිතය

ගැටළු ප්රකාශය

මෙම ගැටළුවේදී, අපට අඩු හා ඉහළ negative ණ නොවන පූර්ණ සංඛ්‍යා දෙකක් ලබා දී ඇත. දී ඇති කාල පරාසය තුළ [අඩු, ඉහළ] අමුතු සංඛ්‍යා කීයක් තිබේදැයි අපට සොයාගත යුතුය.

උදාහරණයක්

low = 3, high = 7
3

පැහැදිලි කිරීම:

3 සහ 7 අතර ඇති අමුතු සංඛ්‍යා [3, 5, 7] වේ.

low = 8, high = 10
1

පැහැදිලි කිරීම:

8 ත් 10 ත් අතර අමුතු සංඛ්‍යා [9] වේ.

ප්රවේශය

දී ඇති කාල පරාසය තුළ ඇති අමුතු සංඛ්‍යා ගණන සොයා ගැනීමට එක් ක්‍රමයක් නම්, අන්තරයේ වමේ සිට දකුණට මායිම හරහා ගමන් කිරීමයි. ලූපයක් එක් එක් අමුතු අංක සඳහා අමුතු කවුන්ටරය වැඩි කරන්න. නමුත් මෙය පරාසයක අමුතු සංඛ්‍යා ගණනය කිරීම සඳහා ඉතා අශෝභන ප්‍රවේශයක් වනු ඇත. මෙය රේඛීය කාල සංකීර්ණතාවයක් ගනු ඇති අතර එවැනි පහසු ගැටළුවක් සඳහා අපට අවශ්‍ය නැත.

ලබා දී ඇති කාල පරාසය තුළ සම්පුර්ණ අමුතු සංඛ්‍යා සොයා ගැනීම ඉතා පහසුය, අප දන්නා පරිදි පරතර පරාසයක අඩක් හා අඩක් පමණ සංඛ්‍යා ඇත.
නමුත් අපි පරතරයේ සීමාවන් ඉතා පරිස්සමින් සලකා බැලිය යුතුය. ඉතින් අපට කළ හැක්කේ පළමු ස්වාභාවික සංඛ්‍යා වල අමුතු සංඛ්‍යා ගණනය කිරීම සඳහා සූත්‍රය සෑදිය හැකි වීමයි. එය ගණන් කිරීමට ඉඩ දෙන්න [n]. එවිට අඩු සහ ඉහළ අතර අමුතු සංඛ්‍යා සමාන වේ:
ගණන් [අඩු, ඉහළ] = ගණන් [ඉහළ] - ගණන් [අඩු -1].

අන්තරාන්තර පරාස ලීට්කෝඩ් විසඳුමක ඔඩ් අංක ගණන් කරන්න

දැන් ගණන් කිරීම සඳහා උදාහරණ කිහිපයක් ගන්න [i]:

ගණන් [1] = 1
ගණන් [2] = 1
ගණන් [3] = 2
ගණන් [4] = 2
ගණන් [5] = 3

අපට එම ගණන අඩු කළ හැකිය [n] = (n + 1) / 2
එබැවින් [අඩු, ඉහළ] = (ඉහළ + 1) / 2 - අඩු / 2 ගණන් කරන්න

ක්රියාත්මක කිරීම

අන්තරාන්තර පරාස ලීට්කෝඩ් විසඳුමක නොගැලපෙන සංඛ්‍යා සඳහා සී ++ වැඩසටහන (බොළඳ ප්‍රවේශය)

#include <iostream>
using namespace std;

int countOdds(int low, int high) 
{
    int count=0;
    for(int i=low;i<=high;i++)
        if(i%2==1) count++;
        
    return count;
}

int main()
{
    int low=3,high=7;  
    cout<< countOdds(low, high) <<endl;
}
3

අන්තරාන්තර පරාස ලීට්කෝඩ් විසඳුමක නොගැලපෙන සංඛ්‍යා සඳහා ජාවා වැඩසටහන (බොළඳ ප්‍රවේශය)

class CountOdd
{  
    public static int countOdds(int low, int high) 
    {
        int count=0;
        for(int i=low;i<=high;i++)
            if(i%2==1) count++;
        
        return count;
    }
    
    public static void main(String args[])
    {
        int low=3,high=7;
        System.out.println(countOdds(low, high));
    }
}
3

සී ++ වැඩසටහන (ප්‍රශස්ත ප්‍රවේශය)

#include <iostream>
using namespace std;

int countOdds(int low, int high) 
{
   return (high + 1) / 2 - low / 2;       
}

int main()
{
    int low=3,high=7;  
    cout<< countOdds(low, high) <<endl;
}
3

ජාවා වැඩසටහන (ප්‍රශස්ත ප්‍රවේශය)

class CountOdd
{  
    public static int countOdds(int low, int high) 
    {
        return (high + 1) / 2 - low / 2;   
    }
    
    public static void main(String args[])
    {
        int low=3,high=7;
        System.out.println(countOdds(low, high));
    }
}
3

අන්තරාන්තර පරාස ලීට්කෝඩ් විසඳුමක නොගැලපෙන සංඛ්‍යා සඳහා සංකීර්ණතා විශ්ලේෂණය

කාල සංකීර්ණත්වය

සෑම අංකයක් සඳහාම ගමන් කිරීම අවශ්‍ය වේ සාමාන්ය (n) සූත්‍රය භාවිතා කරමින් පිළිතුරු ගණනය කිරීමේදී කාල සංකීර්ණත්වය නියත කාලයක් ගතවේ ඕ (1) ක්‍රියාත්මක කිරීමට.

අභ්‍යවකාශ සංකීර්ණතාව 

ඕ (1): පිළිතුරු ගබඩා කිරීම සඳහා භාවිතා කරන විචල්‍යයක් හැර විසඳුම් දෙකෙහිම අමතර ඉඩක් භාවිතා නොවේ.