列表

详情


NC214848. 消减整数

描述

给你一个数字N依序减掉1,2,3,...直到不够减。如果刚好减到0就结束,否则就加上N继续从1开始减,直到减到0为止。

请给出一个数字,计算对于该数字一共重复了几次这个过程。

输入描述

输入的第一行有一个正整数 ,代表测试数据的组数

接下来t行每行一个数 

输出描述

对于每组输入,若能够在有限次内削减为0,在一行中输出重复的过程次数,否则输出 “Impossible”。

示例1

输入:

3
1
2
3

输出:

1
2
1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 566ms, 内存消耗: 488K, 提交时间: 2022-09-16 09:34:25

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
	int t; cin >> t;
	while (t--) {
		int n; cin >> n;
		int temp = n, x = 1;
		while (n >= x) n -= x, x++;
		for (int i = 1; i <= temp; i++) {
			if ((n * i) % x == 0) {
				cout << i << '\n';
				break;
			}
		}
	}
	return 0;
}

C(clang11) 解法, 执行用时: 552ms, 内存消耗: 376K, 提交时间: 2021-01-11 13:17:25

#include<stdio.h>
int main()
{
	int t,n;
	scanf("%d",&t);
	while(t--)
	{
		int x,i;
		scanf("%d",&n);
		x=1;
		while(n-x>=0)
		{
			n-=x;
			x++;
		}
		if(n==0) printf("1\n");
		else
		{//每次都剩下y  ky|x k就是结果 
			for(i=1;i<=x;i++)
			{
				if(i*n%x==0)
				{
					printf("%d\n",i);
					break;
				}
			}
		}
	}
}

C++(clang++11) 解法, 执行用时: 434ms, 内存消耗: 520K, 提交时间: 2021-01-11 00:24:37

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int T;
	for(cin>>T;T;T--)
	{
		int n;int x=1;cin>>n;
		while(n-x>=0)	n-=x,x++;
		for(int i=1;;i++)
		{
			if(i*n%x==0)
			{
				cout<<i<<'\n';break;
			}
		}
	}
	return 0;
}

上一题