NC214848. 消减整数
描述
输入描述
输入的第一行有一个正整数 ,代表测试数据的组数接下来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; }