Problem E - Steps(問題e-步驟)
題目描述
One steps through integer points of the straight line. The length of a step must be nonnegative and can be by one bigger than, equal to, or by one smaller than the length of the previous step.
What is the minimum number of steps in order to get from x to y? The length of the first and the last step must be 1.
Input consists of a line containing n, the number of test cases. For each test case, a line follows with two integers: 0 <= x <= y < 2^31. For each test case, print a line giving the minimum number of steps to get from x to y.
樣例輸入
3 45 48 45 49 45 50
樣例輸出
3 3 4
題意:
一個步驟通過直線的整數點。一個步驟的長度必須是非負的,並且可以由一個大於、等於或小於前一個步驟的長度。
從X到Y的最小步數是多少?第一步和最後一步的長度必須是1。
輸入由一行組成,其中包含N、測試用例的數目。對於每個測試用例,一行後面有兩個整數:0<=x<=y<2^31.對於每個測試用例,列印一行,給出從X到Y的最小步驟數。
AC碼:
#include<stdio.h>
int main()
{
int n;
long long x,y;
long long di;
int i,d;
scanf("%d",&n);
while(n--)
{
scanf("%lld %lld",&x,&y);
di=y-x;
for(i=d=0;i+d<di;i++)
d+=i/2;
printf("%d\n",i);
}
return 0;
}
#include<stdio.h>
int main(){
long long a, b, t, n, sum, k;
scanf("%lld", &t);
while (t--){
scanf("%lld%lld", &a, &b);
n = b - a;
sum = 0;
if (n == 0){
printf("%lld\n", n);
continue;}
for (long long i = 0; ; i++){
sum += 2 * i;
k = sum - n;
if (k >= 0 && k < i){
printf("%lld\n", 2 * i);
break;
}
else if(k >= i){
printf("%lld\n", 2 * i - 1);
break;
}
}
}
return 0;}
/*題目大意:給出兩個數字, 要求從a走到b, 第一步和最後一步只能走1, 每步的值可以是前面一步值-1, 不變和+1.求a到b最少走幾步。
解題思路:1...k k ...1所需步為2 * k,
<1>2 * sum(1~k) ->2 * k
<2>2 * sum(1~k) ~2 * sum(1~k) + 1 + k -> 2 *k + 1
<3>2 * sum(1~k) + k + 1 ~2 * sum(1~k+1) -> 2 *(k + 1)
*/
#include<stdio.h>
int main()
{
int n,x,y;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&x,&y);
int mid=(y-x)/2;
int i=0,sum=0;
while(1)
{
if(sum<=mid)
{
i++;
sum+=i;
}
else
{
sum=sum-i;
i=i-1;
break;
}
}
//printf("i=%d sum=%d\n",i,sum);
//printf("%d %d\n",x,y);
if(y-x-sum*2==0)
i=i*2;
else if((y-x-sum*2)<=i||(y-x-sum*2)==i+1)
i=i*2+1;
else
i=(i+1)*2;
printf("%d\n",i);
}
return 0;
}
/*首次、末次都是1,中間數只能比前一個數大一,或小一、或相等*/
相關文章
- JVM問題排查步驟JVM
- 使用 TensorFlow 的起始步驟 ( First Steps with TensorFlow ) : 工具包
- CF1603E A Perfect Problem 題解
- ABC365E Xor Sigma Problem 題解
- 藍橋杯2023年A組-試題E-顏色平衡樹
- E. Not a Nim Problem
- [CF1188E] Problem from Red Panda 題解
- 解決Oracle死鎖問題步驟Oracle
- Phantom Problem(幻讀)問題
- Problem E: 向量的刪除
- 關於dataguard出現問題的檢查步驟
- Flutter-安裝步驟及安裝遇到的問題Flutter
- JavaScript 專案遷移到 TypeScript 步驟以及遇到的問題JavaScriptTypeScript
- 最大子陣列問題(Maximum subarray problem)陣列
- 2022CCPC綿陽-E-一類圖上DP最佳化
- 編譯Spring原始碼的步驟及一些問題編譯Spring原始碼
- DKhadoop安裝配置步驟教程與常見問題解決Hadoop
- 人工智慧的人類問題(The human problem of AI)人工智慧AI
- 記一次Tomcat卡死在 Deploying web application 步驟的問題TomcatWebAPP
- CF963-Div2-E. Xor-Grid Problem
- 怎樣成為解決問題的高手?——關於問題解決的關鍵4步驟
- linux解決ping通但埠不通的問題的方法和步驟Linux
- iOS IAP應用內購詳細步驟和問題總結指南iOS
- kingbaseV8R6叢集常見問題處理步驟以及思路
- 要把專案問題管理好,專案經理需要這8個步驟!
- Django3.2安裝原始碼xadmin2步驟以及遇到的問題Django原始碼
- 機器學習 | 八大步驟解決90%的NLP問題機器學習
- e語言 文字換行問題
- 操作步驟
- Chayas - 2023-2024 ICPC, Asia Yokohama Regional Contest 2023, Problem E
- Linux 拒絕國外 IP 訪問的步驟Linux
- Java訪問資料庫的具體步驟:Java資料庫
- First steps with Incus
- vnc安裝步驟,vnc安裝步驟詳解VNC
- 牛客周賽 Round50 E-小紅的樹上移動 (期望dp+逆元)
- 專案步驟
- AJAX 操作步驟
- OpenFeign使用步驟