高中生程式解題系統:完全平方和

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

題目連結 http://zerojudge.tw/ShowProblem?problemid=a059

演算法如下:
找出在範圍 [a, b]內大於或等於 a 的完全平方數(sqrt),與 a 的平方根(k)。當 sqrt小於或等於 b 時{  將 sqrt加到 sum裡  k+= 1  sqrt= k* k}

程式碼:
#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;

int main(int argc, char** argv) {
 int t, a, b;
 cin >> t;
 
 int sum[t];
 int i = 0;
 do {
  cin >> a;
  cin >> b;
  int k = 1;
  int sqrt = 1;
  
  sum [i] = 0;
  
  while(sqrt < a) {
   k++;
   sqrt = k * k;
  }
  
  //cout << "S:" << sqrt << endl;
  
  if( sqrt <= b)
      sum[i] = sqrt;
     else
      sum[i] = 0;
  
  k++;
  sqrt = k * k;
  while(sqrt <= b) {
  // cout << "S:" << sqrt << endl;
   sum[i] += sqrt;
   k++;
   sqrt = k * k;
  }
  
  //cout << sum[i] << endl << endl;
  i++;
 } while(i < t);
 
 for(i = 0; i < t; i++)
 {
  cout << "Case " << i + 1 << ": " << sum[i] << endl;
 }
 return 0;
}

數線的觀念


若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

把一個數字放到直線上的一個很多點(數字)所組成的線稱為數線以下圖為例,-3, -2, -1, 0, 1, 2, 3, 4, 5, 6 都是這條直線上的整數,-3 -2之間又有許多的小數(浮點數),每一個小數在數線上都可用一個點來代表,而在數線上左邊的點是小於右邊的點。






若要在數線上標出1/4,因為0.25介於[0, 1]兩個整數之間,於是將[0, 1]之間的線段做4等分切割,每一格的長度就是,1/40 + 0.25就是1/4(紅色箭頭)的位置了。

註:數線圖是由此網址所產生的。

吃不完的巧克力 - 相似形

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。


第一次看到這影片時,馬上想到被切掉一小塊後的整塊巧克力面積一定小於原本的,只是視覺上被騙而已,而這個也是魔術的手法之一,真是個維妙維肖的假長方形阿!

高中生程式解題系統:新手訓練 ~ for + if

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

題目連結 http://zerojudge.tw/ShowProblem?problemid=a244

此題要用 long long int 型態,其他依照題目要求即可。此外筆者在程式碼二用了 Array of Function Pointers 的解法。
程式碼一:
#include <cstdio>

int main() {
 int n;
    while(scanf("%d", &n) != EOF)
 {
  int a;
  long long int b, c;

  for(int i = 0; i < n; i++)
  {
   scanf("%d %lld %lld", &a, &b, &c);
   switch(a) {
    case 1:
     printf("%lld", b+c);
     break;
    case 2:
     printf("%lld", b-c);
        break;
    case 3:
     printf("%lld", b*c);
     break;
    case 4:
     printf("%lld", b/c);
     break;
    default:
     break;
   }
   printf("\n");
  }

 }
    return 0;
}


程式碼二:
#include <iostream>

using namespace std;

long long int add(long long int b, long long int c)
{
    return b + c;
}

long long int mins(long long int b, long long int c)
{
    return b - c;
}

long long int mul(long long int b, long long int c)
{
    return b * c;
}

long long int divi(long long int b, long long int c)
{
    return b / c;
}

int main() {
 int n;
 long long int(*cal[5])(long long int, long long int) = {NULL, add, mins, mul, divi};

    while(cin >> n)
 {
  int a;
  long long int b, c;

  for(int i = 0; i < n; i++)
  {
      cin >> a >> b >> c;
      cout << cal[a](b, c) << endl;
  }

 }
    return 0;
}

惡搞嘻語言第二嘻:嘻資料


若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

C 語言中,宣告一個變數的語法為:
變數型態  變數1, 變數2, ...., 變數n;
詳細的教學可參考底下兩個網頁:

#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
#include<stdint.h>

intmain(void) {
// 有號整數
shortsht; // -32768->32767
inti; // -32768->32767
longl; // -2147483648->2147483647

// 無號整數
unsignedshortusht;
unsignedintui;
unsignedlongul;

// 浮點數
floatf; // 單精準度
doubled; // 雙精準度

// 字元,請參考 http://www.asciitable.com/
charc = 'a';
c = 97;

printf("型態\t\t大小(bytes\n");
printf("short\t\t%d\n", sizeof(short));
printf("int\t\t%d\n", sizeof(int));
printf("long\t\t%d\n", sizeof(long));
printf("float\t\t%d\n", sizeof(float));
printf("double\t\t%d\n", sizeof(double));
printf("long double\t%d\n", sizeof(longdouble));
printf("char\t\t%d\n", sizeof(char));

// 請參考 http://www.cplusplus.com/reference/climits/
// http://edisonx.pixnet.net/blog/post/35305668-%5Bc%5D-printf-%E5%BC%95%E6%95%B8%E8%AA%AA%E6%98%8E
printf("SHRT_MIN = %d\n", SHRT_MIN);
printf("SHRT_MAX = %d\n", SHRT_MAX);
printf("USHRT_MAX = %d\n", USHRT_MAX);

printf("INT_MIN = %d\n", INT_MIN);
printf("INT_MAX = %d\n", INT_MAX);
printf("UINT_MAX = %u\n", UINT_MAX);

printf("LONG_MIN = %ld\n", LONG_MIN);
printf("LONG_MAX = %ld\n", LONG_MAX);
printf("ULONG_MAX = %lu\n", ULONG_MAX);
printf("LLONG_MAX = %lld\n", LLONG_MAX);
printf("LLONG_MIN = %lld\n", LLONG_MIN);
printf("ULLONG_MAX = %llu\n", ULLONG_MAX);

system("pause"); // Console 視窗等待使用者輸入鍵盤上的任意按鍵
return0;
}