试题 算法训练 整数拆分

简介: 试题 算法训练 整数拆分

试题 算法训练 整数拆分

资源限制

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

  对于给定的正整数S,将其拆分为正整数的升序等差数列的和的形式。 例如,对于S = 9,共有如下两种拆分方案:

  9 = 1 + 3 + 5;

  9 = 2 + 3 + 4

  当然,并不是所有的正整数都能做到这种拆分。

输入格式

  测试数据的输入一定会满足的格式。

  例:输入的第一行包含两个整数n, m,分别表示矩阵的行数和列数。接下来n行,每行m个正整数,表示输入的矩阵。

输出格式

  正整数S ( S<=50000000 ) 。

样例输入

样例1:

10

样例2:

3

样例输出

样例1:

1

样例2:

0

提交代码:

#include <iostream>
#include <cmath>
using namespace std;
int i = 1, j = 1;
int main()
{
    int s;
    cin >> s;
    s = s * 2;
    int sum = 0;
    for (i = 3; i <= (int)sqrt(s); i++) //枚举项数
    {
        if (s % i == 0)
        {
            int t = s / i; //首尾项的和
            for (j = 1; j <= t / (i - 1); j++) //枚举公差
            {
                if ((t + (i - 1) * j) % 2 != 0)
                    continue;
                int an = (t + (i - 1) * j) / 2;
                int a1 = t - an;
                if (a1 > 0 && an > 0)
                    sum++;
            }
        }
    }
    cout << sum << endl;
    return 0;
}
相关文章
|
3月前
|
自然语言处理 Rust 算法
【算法】13. 罗马数字转整数(多语言实现)
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 | 字符 | 数值 | |--|--| | I | 1 | | V | 5 | | X | 10 | | L | 50 | | C | 100 | | D | 500 | | M | 1000 | 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1
【算法】13. 罗马数字转整数(多语言实现)
|
2月前
|
算法 Java
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
23 0
|
4月前
|
算法 测试技术 C#
【数位dp】【C++算法】600. 不含连续1的非负整数
【数位dp】【C++算法】600. 不含连续1的非负整数
|
7月前
|
算法 前端开发
前端算法-罗马数字转整数
前端算法-罗马数字转整数
|
2月前
|
算法
算法题 — 整数转二进制,查找其中1的数量
算法题 — 整数转二进制,查找其中1的数量
12 0
|
3月前
|
算法 测试技术 C++
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
|
3月前
|
算法 测试技术 C++
【数位dp】【C++算法】600. 不含连续1的非负整数
【数位dp】【C++算法】600. 不含连续1的非负整数
|
3月前
|
算法
算法基础——整数二分查找(二)
算法基础——整数二分查找(二)
29 0
算法基础——整数二分查找(二)
|
4月前
|
算法 测试技术 C#
【滑动窗口】C++算法:K 个不同整数的子数组
【滑动窗口】C++算法:K 个不同整数的子数组
|
4月前
|
存储 算法 Java
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
43 0