首页 > 试题广场 >

游游的整数拆分

[编程题]游游的整数拆分
  • 热度指数:1215 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
游游拿到了一个正整数n,她准备将n拆分成两个正整数ab,满足a+b=na*b是3的倍数。你能告诉游游有多少种拆分方式吗?

输入描述:
一个正整数n
1\leq n \leq 10^{14}


输出描述:
合法的拆分方案数。
示例1

输入

10

输出

6

说明

10=1+9
10=3+7
10=4+6
10=6+4
10=7+3
10=9+1
共有以上6种拆分方法满足a*b是3的倍数。
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
            long a = in.nextLong();
            long res=0L,j=0;
            long n = a%3;
            
           if (n==0) {
                res=a/3-1;
               
            } else  {
               
                res=(a-n)*2/3;
               
            }
             
             System.out.println(res);
       
    }
}
发表于 2023-07-20 00:09:14 回复(1)
#include<iostream>
using namespace std;

int main()
{
	long long  n=0;
	cin>>n;
	if(n%3!=0){
		cout<<n/3*2;
	}else{
		cout<<n/3-1;
	}
	return 0;
}

发表于 2023-07-21 19:38:11 回复(0)
import sys

for line in sys.stdin:
    a = int(line.strip())
    print((a - 1) // 3 * (1 + (a % 3 != 0)))

发表于 2023-07-22 17:40:38 回复(0)
import java.util.Scanner;
 
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        long n = in.nextLong();
        int times = (n%3 == 0) ? 1:2;
        System.out.println(((n-1)/3)*times);
    }
}

发表于 2025-03-19 17:32:20 回复(0)
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        let tokens = line.split(' ');
        let n = parseInt(tokens[0]);
        let left=3,right=n-1
        if(n<=3){
            console.log(0)
            return 0
        }
        while(right %3!==0)
            right--
        let count = right/3
        left = n-right
        let res = left % 3==0?count:count*2
        console.log(res)
    }
}()

发表于 2023-11-07 16:51:04 回复(0)
const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
rl.on('line', function (line) {
    let num = Math.floor(line/3) ;
    if(line%3==0){
    console.log(num-1)
    } 
    if(line%3){
    console.log(num*2)
    }

});
发表于 2023-09-12 15:02:44 回复(0)