1.反序數字 - 進階題
技巧一 : 剝皮法 %10取餘數
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
while(n>0){ //如果n還有剩下,不為0
int now= n%10; //剝皮取餘數
n/= 10;
printf("%d", now);
}
printf("\n");
}
技巧二 : 組合成數字 (吹氣球)
#include <stdio.h>
int main()
{
int n, ans= 0;
scanf("%d", &n);
while(n>0){
int now= n%10;
n/= 10;
ans*=10; //吹氣放大
ans+= now; //空洞,塞答案
}
printf("%d\n", ans);
}
-----------------------------------------------
2.二進位轉十進位 - 進階題
技巧一 : 剝皮 %10, 固定剝4次, 再組合
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int n1= n%10; //取餘數
int n2= (n/10)%10; //取十位數
int n3= (n/100)%10; //取百位數
int n4= (n/1000)%10; //取千位數
int ans= n4*8+ n3*4+ n2*2+ n1*1; //轉換成10進位
printf("%d\n", ans);
}
------------------------------------------------
CPE : UVA 1583
技巧 : 先看 input/output 關聯, 再找關鍵字
#include <stdio.h>
int main()
{
int T;
scanf("%d", &T);
for(int t=0;t<T;t++){
int N;
scanf("%d", N);
printf("%d\n", ans)
}
}
技巧 : generator 觀察題目後發現
ex : 256= 254+2+5+4
--> 256 是 254 的 generator
#include <stdio.h>
int genBig(int n){ //用函式簡化數字
int ans= n;
while(n>0){
ans+= n%10; //剝皮, 把每一位數加進來
n/=10; //剩下越用越少
}
return ans;
}
int main()
{
int T; //有幾筆測試資料 (T筆)
scanf("%d", &T);
for(int t=0;t<T;t++){
int N;
scanf("%d", &N);
int ans= 0; //迴圈前還不知道答案
for(int i=1;i<=N;i++){ //技巧4 暴力試答案
if(genBig(i)==N) { //小的i --> 大的,剛好就是N,找到答案
ans= i; //答案就是i
break; //找到答案,中斷迴圈
}
}
printf("%d\n", ans);
}
}
憤怒鳥
PImage imgBird;
void setup(){
size(500,400);
imgBird= loadImage("bird.png");
imageMode(CENTER);
}
void draw(){
background(255);
image(imgBird, mouseX, mouseY, 100,100);
}
PImage imgBird;
void setup(){
size(500,400);
imgBird= loadImage("bird.png");
imageMode(CENTER); //以中心點為座標
}
float birdX= 100, birdY= 300, oldX, oldY;
boolean bMoving= false; // if (boolean變數) 成立or不成立
void draw(){
background(255); //背景要清,不要殘影
image(imgBird, birdX, birdY, 100,100); //鳥大小100*100
if(bMoving) line(mouseX, mouseY, oldX,oldY);
}//如果有點到,再拉動與畫線
void mousePressed(){ //判斷有沒有滑鼠壓到鳥
if(dist(mouseX, mouseY, birdX, birdY)<50){ //距離夠近
bMoving= true; //開始移動bird
oldX= birdX; oldY= birdY; //等一下拉線用的
}
}
void mouseDragged(){
if(bMoving){ //如有點到,開始移動bird
birdX= mouseX; birdY= mouseY;
}
}
PImage imgBird;
void setup(){
size(500,400);
imgBird= loadImage("bird.png");
imageMode(CENTER);
}
float birdX= 100, birdY= 300, oldX, oldY, vx=0, vy=0;
boolean bMoving= false;
void draw(){
background(255);
image(imgBird, birdX, birdY, 100,100);
if(bMoving) line(mouseX, mouseY, oldX,oldY);
birdX += vx; birdY+= vy;
if(birdX>500-50 || birdX<50) vx= -vx;
if(birdY>400-50 || birdY<50) vy= -vy;
}
void mouseReleased(){
bMoving=false; //不再拉動,不再移動 --> 要彈射出去
vx= (oldX-mouseX)/10; vy=(oldY-mouseY)/10;
}
void mousePressed(){
if(dist(mouseX, mouseY, birdX, birdY)<50){
bMoving= true;
oldX= birdX; oldY= birdY;
}
}
void mouseDragged(){
if(bMoving){
birdX= mouseX; birdY= mouseY;
}
}
---------------------------------------------------
沒有留言:
張貼留言