Задача [Сумма несовершенства](210-2.html?problem=2354). `~10^8` сложений и обращений к массиву
||.u|С||
```cpp
#include <stdio.h>
#include <stdlib.h>
int v[10000001];
int main() {
int a, b;
scanf("%d%d",&a,&b);
for (int d = 1; d <= b; ++d)
for(int m=2*d; m<=b; m+=d)
v[m] += d;
long long s = 0;
for (int i = a; i <= b; ++i)
s += abs(v[i] - i);
printf("%lld\n",s);
}
```
||.u|С++||
```cpp
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
vector<int> v(b+1,0);
for (int d = 1; d <= b; ++d)
for(int m=2*d; m<=b; m+=d)
v[m] += d;
long long s = 0;
for (int i = a; i <= b; ++i)
s += abs(v[i] - i);
cout << s << "\n";
}
```
||.u|Pascal||
```pascal
var a,b,d,m,i:integer;
v: array [0..10000000] of integer;
s:int64;
begin
read(a,b);
{$R-}
for d := 1 to b do
begin
m:=2*d;
while m<=b do
begin
inc(v[m],d);
inc(m,d);
end;
end;
s:=0;
for i:= a to b do
inc(s,abs(v[i] - i));
writeln(s);
end.
```
||.u|Python||
```python
a,b=map(int,input().split())
b+=1
v=[0]*b
for d in range(1,b):
for m in range(2*d, b, d):
v[m] += d
s=0
for i in range(a,b):
s += abs(v[i] - i)
print(s)
```
||.u|Lua||
```lua
a,b = io.read("n", "n")
v = {}
for i = 1, b do
v[i] = 0
end
for d=1,b do
for m=2*d, b, d do
v[m]=v[m]+d
end
end
s=0
for i=a,b do
s=s+math.abs(v[i] - i)
end
print(s)
```
||.u|JavaScript||
```javascript
let [a,b]=input('nn')
let v = new Array(b+1)
for (let i=1; i<=b; ++i)
v[i] = 0
for (let d = 1; d <= b; ++d)
for(let m=2*d; m<=b; m+=d)
v[m] += d
let s = 0
for (let i = a; i <= b; ++i)
s += Math.abs(v[i] - i)
print(s)
```
||.u|Java||
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
int[] v = new int[b + 1];
for (int d = 1; d <= b; ++d) {
for (int m = 2 * d; m <= b; m += d) {
v[m] += d;
}
}
long sum = 0L;
for (int i = a; i <= b; ++i) {
sum += Math.abs(v[i] - i);
}
System.out.println(sum);
}
}
```
||.u|Rust||
```rust
#[macro_use]
extern crate text_io;
fn main() {
let a:i32;
let b:i32;
scan!("{} {}",a,b);
let mut v = vec![0i32; (b as usize)+ 1];
for d in 1..=b {
let mut m=2*d;
while m<=b {
v[m as usize] += d;
m+=d;
}
}
let mut s = 0i64;
for i in a..=(b) {
s += v[i as usize].abs_diff(i) as i64;
}
println!("{}", s);
}
```
||.u|go||
```go
package main
import "fmt"
func main() {
var (a int32; b int32)
fmt.Scan(&a,&b)
v := make([]int32, b+1)
for d := int32(1); d <= b; d++ {
for m := int32(2) * d; m <= b; m += d {
v[m] += d
}
}
var s int64
for i := a; i <= b; i++ {
d:=v[i] - i
if d<0 {
d=-d
}
s += int64(d)
}
fmt.Println(s)
}
```
||.u|С#||
```cs
using System;
using System.Text;
namespace MyApplication
{
class Program
{
static void Main()
{
int[] nums = Array.ConvertAll(Console.ReadLine().Split(new char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries), s=>Convert.ToInt32(s));
int a = nums[0];
int b = nums[1];
int[] v = new int[b + 1];
for (int d = 1; d <= b; ++d)
for (int m = 2 * d; m <= b; m += d)
v[m] += d;
long sum = 0;
for (int i = a; i <= b; ++i)
sum += Math.Abs(v[i] - i);
Console.WriteLine(sum);
}
}
}
```
||.u|Kotlin||
```kotlin
fun main() {
val (a,b)=readln().split(" ").map{ it.toInt() }
val v = IntArray(b + 1)
for (d in 1..b) {
var m = 2 * d
while (m <= b) {
v[m] += d
m += d
}
}
var sum = 0L
for (i in a..b) {
sum += kotlin.math.abs(v[i] - i)
}
println(sum)
}
```
||.u|Scheme||
```scheme
(let* ((a (read))
(b (+ (read) 1))
(v (make-vector b 0)))
(do ((d 1 (+ d 1))) ((>= d b))
(do ((m (* 2 d) (+ m d))) ((>= m b))
(vector-set! v m (+ (vector-ref v m) d))
)
)
(display
(do
((i a (+ i 1)) (acc 0 (+ acc (abs (- (vector-ref v i) i)))))
((>= i b) acc)))
(newline)
)
```
||.u|Dart||
```dart
import 'dart:io';
void main() {
final [a,b] = (stdin.readLineSync()??'').trim().split(' ').map(int.parse).toList();
List<int> v = List.filled(b + 1, 0);
for (var d = 1; d <= b; d++) {
for (var m = 2 * d; m <= b; m += d) {
v[m] += d;
}
}
var sum = 0;
for (var i = a; i <= b; i++) {
var d=v[i] - i;
if(d<0) { d=-d; }
sum += d;
}
print(sum); // вывод результата
}
```