//Работает до 7 числа
//Dev-C++ 5.11 (C)
#include <stdio.h>
#include <math.h>
int main(void)
{long long unsigned int a,b,i,d;
i=2;
d=1;
scanf("%d %d",&a,&b);
while (pow(2,i-1)*(pow(2,i)-1)<=b)
{for(int j=2;j<(pow(2,i)-1)/2;j++)
if(int(pow(2,i)-1)%j==0)d=0;
if(d)
{d=pow(2,i-1)*(pow(2,i)-1);
if(d>=a)printf("%d \n",d);}
d=1;
i++;}
return 0;}
Ответ:
1)
20₁₀
45₈
101001₂
65₁₆
24₈ = 4*8⁰ + 2*8¹ = 20₁₀
37₁₀ = 5*8⁰ + 4*8¹ = 45₈
41₁₀ = 1*2⁰ + 0*2¹ + 0*2² + 1*2³ + 0*2⁴ + 1*2⁵ = 101001₂
101₁₀ = 5*16⁰ + 6*16¹ = 65₁₆
2)
100110011₂ = 1*2⁰ + 1*2¹ + 0*2² + 0*2³ + 1*2⁴ + 1*2⁵ + 0*2⁶ + 0*2⁷ + 1*2⁸ = 307₁₀
10001001₂ = 1*2⁰ + 0*2¹ + 0*2² + 1*2³ + 0*2⁴ + 0*2⁵ + 0*2⁶ + 1*2⁷ = 137₁₀
307₁₀ + 137₁₀ = 444₁₀
444₁₀ = 0*2⁰ + 0*2¹ + 1*2² + 1*2³ + 1*2⁴ + 1*2⁵ + 0*2⁶ + 1*2⁷ + 1*2⁸ = 110111100₂
1111111₂ = 1*2⁰ + 1*2¹ + 1*2² + 1*2³ + 1*2⁴ + 1*2⁵ + 1*2⁶ = 127₁₀
100001₂ = 1*2⁰ + 0*2¹ + 0*2² + 0*2³ + 0*2⁴ + 1*2⁵ = 33₁₀
127₁₀ + 33₁₀ = 160₁₀
160₁₀ = 0*2⁰ + 0*2¹ + 0*2² + 0*2³ + 0*2⁴ + 1*2⁵ + 0*2⁶ + 1*2⁷ = 10100000₂
10110001₂ = 1*2⁰ + 0*2¹ + 0*2² + 0*2³ + 1*2⁴ + 1*2⁵ + 0*2⁶ + 1*2⁷ = 177₁₀
1110₂ = 0*2⁰ + 1*2¹ + 1*2² + 1*2³ = 14₁₀
177₁₀ * 14₁₀ = 2478₁₀
2478₁₀ = 0*2⁰ + 1*2¹ + 1*2² + 1*2³ + 0*2⁴ + 1*2⁵ + 0*2⁶ + 1*2⁷ + 1*2⁸ + 0*2⁹ + 0*2¹⁰ + 1*2¹¹ = 100110101110₂
111011₂ = 1*2⁰ + 1*2¹ + 0*2² + 1*2³ + 1*2⁴ + 1*2⁵ = 59₁₀
1101₂ = 1*2⁰ + 0*2¹ + 1*2² + 1*2³ = 13₁₀
59₁₀ * 13₁₀ = 767₁₀
767₁₀ = 1*2⁰ + 1*2¹ + 1*2² + 1*2³ + 1*2⁴ + 1*2⁵ + 1*2⁶ + 1*2⁷ + 0*2⁸ + 1*2⁹ = 1011111111₂
3)
111₂ < 34₈ < 76₁₀ < A2₁₆
111₂ = 1*2⁰ + 1*2¹ + 1*2² = 7₁₀
A2₁₆ = 2*16⁰ + A*16¹ = 162₁₀
34₈ = 4*8⁰ + 3*8¹ = 28₁₀
76₁₀ = = 76₁₀
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string s, pat;
getline(cin, s);
getline(cin, pat);
smatch sm;
regex p("\\b\\w*" + pat + "\\w*\\b");
cout << "Найдено: ";
while ( regex_search(s, sm, p) ) {
cout << sm[0] << ' ';
s = sm.suffix();
}
return 0;
}
<em>1. Современное, короткое и быстрое решение</em>
<em>// PascalABC.NET 3.2, сборка 1417 от 28.03.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var a:=ArrRandom(16,-20,80); a.Println;
Writeln('S=',a.Where((x,i)->i.IsOdd).Sum)
end.
<u>Пример</u>
61 64 70 22 76 22 18 44 36 53 29 -9 42 -19 66 34
S=211
<em>2. А вот так все еще учат в большинстве школ (стиль образца 70-80х годов прошлого века)</em>
const
n=16;
var
i,s:integer;
a:array[1..n] of integer;
begin
Randomize;
s:=0;
for i:=1 to n do begin
a[i]:=Random(101)-20;
Write(a[i],' ');
if i mod 2=0 then s:=s+a[i]
end;
Writeln;
Writeln('S=',s)
end.