简单的C语言问题,求秒杀 简单题目,求秒杀
\u6c42\u6700\u7b80\u5355\u7684C\u8bed\u8a00\u7a0b\u5e8f#include
main()
{
int a,b,t=0;
scanf("%d %d",&a,&b);
if (a<b)
{
t=a;
a=b;
b=t;
}
printf("%d %d %d %d %d",(a+b),(a-b),(a/b),(a*b),(a%b));
}
C\u8bed\u8a00\u662f\u4e00\u95e8\u901a\u7528\u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00\uff0c\u5e94\u7528\u5e7f\u6cdb\u3002C\u8bed\u8a00\u7684\u8bbe\u8ba1\u76ee\u6807\u662f\u63d0\u4f9b\u4e00\u79cd\u80fd\u4ee5\u7b80\u6613\u7684\u65b9\u5f0f\u7f16\u8bd1\u3001\u5904\u7406\u4f4e\u7ea7\u5b58\u50a8\u5668\u3001\u4ea7\u751f\u5c11\u91cf\u7684\u673a\u5668\u7801\u4ee5\u53ca\u4e0d\u9700\u8981\u4efb\u4f55\u8fd0\u884c\u73af\u5883\u652f\u6301\u4fbf\u80fd\u8fd0\u884c\u7684\u7f16\u7a0b\u8bed\u8a00\u3002
\u5c3d\u7ba1C\u8bed\u8a00\u63d0\u4f9b\u4e86\u8bb8\u591a\u4f4e\u7ea7\u5904\u7406\u7684\u529f\u80fd\uff0c\u4f46\u4ecd\u7136\u4fdd\u6301\u7740\u826f\u597d\u8de8\u5e73\u53f0\u7684\u7279\u6027\uff0c\u4ee5\u4e00\u4e2a\u6807\u51c6\u89c4\u683c\u5199\u51fa\u7684C\u8bed\u8a00\u7a0b\u5e8f\u53ef\u5728\u8bb8\u591a\u7535\u8111\u5e73\u53f0\u4e0a\u8fdb\u884c\u7f16\u8bd1\uff0c\u751a\u81f3\u5305\u542b\u4e00\u4e9b\u5d4c\u5165\u5f0f\u5904\u7406\u5668\uff08\u5355\u7247\u673a\u6216\u79f0MCU\uff09\u4ee5\u53ca\u8d85\u7ea7\u7535\u8111\u7b49\u4f5c\u4e1a\u5e73\u53f0\u3002
我认为最关键是要每次求和之后也进行求余,这样不至于太大超出int范围。
写完发现和 __angelfish| 说的差不多。只不过他一下子申请超大内存重复操作不太可取。
#include <stdio.h>
#define N 100
/*求余MOD函数,为了避免每位数总和太大超过int范围,每次求和的之后时候求余*/
int MOD(long num)
{
int result=0;
while(num)
{
result+=(num%10);
num/=10;
result%=9; /*每次求和之后求余*/
}
return result;
}
int main()
{
char ch;
int i=0,num;
long x;
int a[N]; /*存储每一个输入数求余之后的结果*/
scanf("%d",&num);
getchar();
while(num--)
{
x=0;
ch=getchar();
while(ch!='\n')
{
x=ch-'0'+x;
ch=getchar();
}
a[i]=MOD(x);
i++;
}
num=i;
for(i=0;i<num;i++)
printf("%d\n",a[i]);
return 0;
}
请确认这个数:“它的位数小于等于一百万”,还是大小小于一百万?
如果是前者,有可能是大数,超了整数表示的范围
具体算法上,下面这段是没用的,直接拿x%9就可以得到结果,因为你前面x等于这个数字的各位数之和,那么这个数整除九之后的余数 就等于 这个数字的各位数之和整除9之后的余数,即x%9
while(x>=10)
{
temp=x;
x=0;
while(temp!=0)
{
x=x+temp%10;
temp=temp/10;
}
}
呃,是我理解错了!确实是各个位上的数相加结果整除9就可以了!
while(x>=10)
{...
}
去掉这个外面的循环就行了吧!直接求%9咯!
全局变量只申请一次
#include <stdio.h>
char bigNumber[1000002];
int main(int argc, char *argv[])
{
// 数据总数
int T=0;
// mod 为除数,remainder 为当前的余数
int mod=9,remainder=0;
int i=0;
scanf("%d",&T);
while(T--)
{
scanf("%s",bigNumber);
for(i=0,remainder=0;bigNumber[i];i++)
{
/* 假设 bigNumber 一共有 N 位数字组成。那么我们要做的就是:
计算 bigNumber[0]...bigNumber[N-1] 除以 mod 的余数。
因为 N 最大的值为 1000000 ,所以不能用常规的除法,我们需要模拟大整数的除法,得到余数。
也即是从最高位 bigNumber[0] 开始除以数字 mod 取余数,直到最后一位 bigNumber[N-1]。
假设已经有数字 remainder 为,为 bigNumber[0]...bigNmber[i-1] 除以 mod 得到的余数。
下面我们来计算数字 bigNumber[0]...bigNmber[i] 除以 mod 的余数。算法为:
1.首先取出 bigNumber[i] 的数值,也就是 (bigNumber[i]-'0');
2.然后加上 bigNumber[0]~bigNmber[i-1] 遗留下来的余数 remainder。
当然不是直接加上 remainder ,因为 remainder 对于 bigNumber[i] 来说,是【高一位】的结果,
所以要乘以一个基数 10 ,也就是加上 remainder*10,得到:
(remainder*10 + (bigNumber[i]-'0')。
这就是当前要被数字 mod 除的数字。
3.更新 remainder 为数字 bigNumber[0]...bigNmber[i] 除以 mod 的余数。
也即是:
remainder = (remainder*10 + (bigNumber[i]-'0')) % mod
4.当 i=0 时,因为 bigNumber[0] 是最高位,因此 remainder = 0;
当 i=N-1,remainder 就是 bigNumber[0]...bigNubmer[N-1] 除以 mod 的余数。
*/
remainder = (remainder*10 + (bigNumber[i]-'0')) % mod;
}
printf("%d\n",remainder);
}
return 0;
}
绛旓細濡傚浘 婧愪唬鐮:/*灏廘灞呬綇鐨勫湴鏂规湁寰堝鍩庡競...浣滆:q839219286绠楁硶鎬濇兂锛氬煄甯傚浘閲囩敤DFS鎼滅储锛屾悳绱㈢粓姝㈡潯浠舵槸锛氬埌杈剧粓鐐规垨 Vmax-Vmin锛瀌V璁 dV=Vmax-Vmin锛屾眰dV鐨勬柟娉曟槸鍒╃敤 Vmax銆乂min鐨勯掑綊鍘嗗彶璁板綍鍥剧粨鏋勯噰鐢ㄢ滈偦鎺ヨ〃鈥濇硶锛屽瓨鍌ㄧ粨鏋勯噰鐢ㄦ暟缁勩*///C璇█鐗#include<stdio.h>#include<stdlib.h>#...
绛旓細(5)鍋囧涓婅堪鎯呭喌閮芥病鍑虹幇锛岄偅涔堣繖閲屽氨鍙互鍫靛鏂规锛屾垨鑰呰嚜瀹氫箟涓嬫 杩欓噷闈㈤昏緫鏈夌偣涔憋紝鑰屼笖寰堝娌℃湁鑰冭檻锛屾墍浠ヤ綘鏄珮鎵嬬殑璇濆紑鍙戣繖涓郴缁熼偅涔堟湁鍙帺鎬э紝鍋囧浣犺繛浜斿瓙妫嬮兘鏄彍楦熺殑璇濓紝閭d箞寰堝浣犺冭檻涓嶅埌锛岄偅涔堥珮鎵嬪彲浠绉掓潃浣犵殑绯荤粺銆傛敞鎰忕殑鏄紝浜斿瓙妫嬪彉鍖栨瘮杈冨锛岃鐔熺煡妫嬪眬鐨勫緢澶氭儏鍐碉紝鐗瑰埆鏄鐩樺ぇ灏忕殑...
绛旓細鈥滆椤圭浉娑堚濈殑8绉嶇被鍨,浣犲浼氫簡鍚
绛旓細褰撶劧鍙湁1涓紝灏辨槸111 涓夌鎯呭喌鐩稿姞 锛10-1锛*锛10-1锛+a*锛10-1锛夛紜a*锛10-1锛夛紜 锛10-1锛+锛10-1锛夛紜a+1 = 11*锛10-1锛+2a*锛10-1锛夛紜a+1 =99+19a+1 =19a+100 鍏朵腑锛岀畻涓婁簡201~299锛岃鍘绘帀19 ___楠岃瘉锛200椤垫椂锛19*2+100-19=119 鎵浠ヤ綘璇寸殑绉掓潃鏄敊鐨 ...
绛旓細鏂规硶涓锛氱敤浣欐暟璁ㄨ 璁ㄨ14^14闄や互100鐨勪綑鏁帮紝灏辨槸瀹冪殑鏈綅鏁板瓧 100=2*5*5*2 鍥犱负14^14闄や互4浣欐暟涓2 鑰14^2闄や互25鐨勪綑鏁21 鎵浠14^14闄や互25鐨勪綑鏁版槸21^7 21^2 闄や互25鐨勪綑鏁版槸16 鑰16^3闄や互25鐨勪綑鏁版槸21 鎵浠21^7 闄や互25鐨勪綑鏁板氨鏄16^3 *21鐨勪綑鏁 缁撴灉寰16 鎵浠14^14鐨勬湯浣嶆暟瀛楁槸16...
绛旓細榻愭鏂圭▼閫氳В dy/dx - y*tan(x)=0 dy/dx=y*tan(x)dy/y=sin(x)/cos(x)*dx dy/y=-dcos(x)/cos(x)ln(y)=-ln(cos(x))+C y=C/cos(x)闈為綈娆℃柟绋嬬壒瑙d负 y=x/cos(x) 锛屼唬鍏ユ楠 闈為綈娆℃柟绋嬬殑閫氳В涓 y=(x+C)/cos(x)浠e叆y(0)=0鐨勬潯浠跺悗鐭锛孋=0锛屾晠 y=x/cos(x...
绛旓細鐢遍鎰忓彲鐭ヤ袱姘旂几涓皵浣撶殑鐗╄川鐨勯噺鐩稿悓锛屾晠鏈 PAVA / TA = PBVB / TB 锛屽綋涓よ呯殑娓╁害鐩稿悓鏃讹紝PA锛濸B锛屾晠VA锛淰B锛屾牴鎹= m/v 鍙煡蟻A锛炏丅锛屾晠B瀹瑰櫒涓哀姘旂殑瀵嗗害杈冨皬锛庣敱浜庢皵浣撶殑娓╁害涓庡懆鍥寸幆澧冩湁鍏筹紝鏁呮棤娉曠缁熺殑鍒ゆ柇姘斾綋娓╁害鐨勯珮搴︼紝鏁匘閿欒锛庣敱浜 VA/ TA = K/ P 锛屾晠...
绛旓細绛旀瑙f瀽鏈闂锛濡傛灉鎴戠殑伪鍙5蟺/4鍛紝姝ゆ椂tan伪=1锛屼絾鏄痗os伪=-1/鏍瑰彿2锛岄鐩殑鎰忔濇槸鏄惁瀛樺湪鈭犖变娇寰椾袱涓潯浠跺悓鏃舵垚绔嬨侭椤逛腑鍥犱负tan伪=1锛屾墍浠ノ辩殑鑼冨洿搴斾负锛埾/4锛+k蟺锛堥櫎鍘(蟺/2)+k蟺锛夛紝鍥犳姝ゆ椂cos伪涓嶅彲鑳戒负0锛屽洜涓篶os伪鍙栧埌0鐨勭偣锛宼an伪閮戒笉瀛樺湪銆傝寰楅噰绾筹紒
绛旓細涓銆60搴︾殑闃村奖闈㈢Н鍏堟眰鍗婂緞涓4鐨勫渾鐨勯潰绉啀涔樹互鍏垎涔嬩竴锛60搴︾殑闈㈢Н鏄暣涓渾鐨勫叚鍒嗕箣涓锛夊悓鐞30搴︾殑闃村奖闈㈢Н鍏堟眰鍗婂緞涓4鐨勫渾鐨勯潰绉啀涔樹互鍗佷簩鍒嗕箣涓锛30搴︾殑闈㈢Н鏄暣涓渾鐨勫崄浜屽垎涔嬩竴锛 鍐嶇浉鍔 浜屻佽緟鍔╃嚎锛氳繛鎺ユ枩杈逛笌鍗婂渾浜ょ偣鍜岀洿瑙掗偅涓偣 鍙戠幇涓榛戜竴鐧戒袱鍧楅潰绉浉绛夛紝鎶婂皬榛戞浛鎹㈡垚灏忕櫧鍐...