Translate

Views

Sunday, June 26, 2022

Làm thế nào để tính x= x++ + x-- - --x + ++x trong Java

 Cho x=1,     tính x =    x++    (+)     x--    (-)    --x    (+)    ++x


Cách giải:

//đối với x++ ta không tăng lên trực tiếp như ++x mà thay giá trị đó cho x của phép toán tiếp theo


Giải:

x =    x++    (+)     x--    (-)    --x    (+)    ++x

x=     1++    (+)     2--    (-)       0    (+)        1    (ở đây 1++ ko tăng lên trực tiếp mà thay giá trị đó cho x của phép toán tiếp theo (+) là 2. Ở phép toán tiếp theo (+), 2-- ko trừ trực tiếp mà thay cho x của phép toán tiếp theo (-) là 1, nhưng ở phép toán này (-) có toán tử -- trước x nên giá trị sẽ là 0. Phép toán cuối cùng (+) có toán tử ++ trước x nên giá trị x được tăng lên trực tiếp từ 0 thành 1)

x=     1          +      2        -        0      +         1     =   4    (tính toán với các giá trị x ở trên ta được 4 là kết quả cuối cùng)



Wednesday, June 1, 2022

Solution Kattis - Amalgamated Artichokes

 Source: https://open.kattis.com/problems/artichoke


Don't worry if you don't know C# because it's quite similar to C++, Java


Submission

IDDATEPROBLEMSTATUSCPULANG
TEST CASES
901442101:08:19Amalgamated ArtichokesAccepted0.14 sC#

Submission contains 1 file: download zip archive

FILENAMEFILESIZESHA-1 SUM
artichoke.cs1044 bytes9b556c241ecfb038e69b55e5dd3917b53f2b84f6download

Edit and resubmit this submission.

artichoke.cs

using System;
class Program
{
double[] dp = new double[1000111];
double[] price = new double[1000111];
int p, a, b, c, d, n, k;
Program()
{
string[] s = Console.ReadLine().Split(" ");
p = Convert.ToInt32(s[0]);
a = Convert.ToInt32(s[1]);
b = Convert.ToInt32(s[2]);
c = Convert.ToInt32(s[3]);
d = Convert.ToInt32(s[4]);
n = Convert.ToInt32(s[5]);
k=0;
while (k < n)
{
price[++k] = p * (Math.Sin(a * k + b) + Math.Cos(c * k + d) + 2);
}
dp[n] = price[n];
for(int i=n-1; i>=1; i--)
dp[i]= Math.Min(price[i], dp[i+1]);
double declineMAX = 0, MAX = Double.MinValue;
for (int i = 1; i <= n; i++)
{
MAX= Math.Max(MAX, price[i]);
declineMAX = Math.Max(MAX - dp[i], declineMAX);
}
Console.WriteLine(declineMAX);
}
public static void Main(string[] args)
{
new Program();
}
}